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日)

猜你喜欢

转载自www.cnblogs.com/Nicholas0707/p/9643660.html