zoukankan      html  css  js  c++  java
  • Python:每日一题003

    题目

    一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

    程序分析

    在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。提示:使用 math 模块。

    个人解题思路及结果:

     from math import sqrt
      ​
      def issqrt(num):
          x = int(sqrt(num))
          pow_x = x * x
          return pow_x == num   #判断一个数是否可以被开方,如果不能被开方则int后数值变小,就与原数数值不相等
      num_list = []
      n = -100  #注意这里的起点,题目没有说明不能为负整数,应该从可以开方的0开始算起,即起点取值到-100
      while n < 10000:
          a = n + 100
          b = n + 268
          if issqrt(a) and issqrt(b):
              num_list.append(n)
          n = n + 1
      print("这些数是",num_list)
     
    

      

    其他的参考解答:

    解答1

      
      import math
      for i in range(-100,10001):
          if math.sqrt(i+100)%1 == 0 and math.sqrt(i+268)%1 == 0: #这里是直接计算除以1取余是否为0
              print(i)
    

      

    解答2

      
      for x in range(-100, 10000):
          a = (x + 100) ** 0.5
          b = (x + 268) ** 0.5
          if not a % 1 and not b % 1:
              print(x)
     
    

    解答3

      
      from math import sqrt
      print([x for x in range(-100,10000) if (int(sqrt(x+100)))**2==x+100 and (int(sqrt(x+268)))**2==x+268]) 
      #直接用列表解析式生成,一个数+100的开方的平方等于一个数加100,如果开方后有小数则不相等。
    

      

    (本文编号003,首发于2018年9月13日)

  • 相关阅读:
    WebSocket使用及优化(心跳机制与断线重连)
    JS案例:触底懒加载
    你知道近来年大火的DDD是如何兴起的吗?以及与微服务的关系
    Sql Server的Cross Apply用法
    跨域信息传递解决方案
    【转】理解字节序
    NATAPP优惠码
    <学习笔记>筛法
    <学习笔记>线性基
    【react + BizCharts】
  • 原文地址:https://www.cnblogs.com/Nicholas0707/p/9643660.html
Copyright © 2011-2022 走看看