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