题目:
一个整数,它加上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)
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日)