简单python代码问题
问题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?我的代码:importmath######################...
问题: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 我的代码: import math ####################################### for i in range(10000): i1=sqrt(i+100) i2=sqrt(i+268) if isinstance(i1,'int') and isinstance(i2,'int'): print i 请问代码哪里错了,谢谢
展开
3个回答
展开全部
你的代码确实错了几处。
sqrt()是math中的函数,使用时应该为math.sqrt()
math.sqrt()的计算结果为浮点数,肯定不是int型的。
你的思想是把完全平方数开方,这样应该得到一个小数部分为0的数。但小数部分为0,不一定是int型,int型并不是整数的意思。即1.0不是int型。此外,浮点数是有计算精度的,你做开方运算,有时候即便这个数明明就是个完全平方数,但计算机也很难得到一个恰好是小数部分为0的结果,而是诸如9.9999999999953的结果。所以,你的这种方法有一定局限性。
基于你的思路,不妨做一下修正。首先,按你的思路计算开平方,这样原则上应该得到一个小数部分为0或者至少也是极其接近于小数部分为0的数。此时,对这个数四舍五入取整,然后再求其平方,看它是不是等于你的完全平方数即可。程序如下:
In [37]: import math
In [38]: for i in range(10000):
....: if round(math.sqrt(i+100))**2 == (i+100):
....: if round(math.sqrt(i+268))**2 == (i+268):
....: print i
....:
21
261
1581
展开全部
sqrt=math.sqrt
for i in range(10000):
i1=int(sqrt(i+100))
if i1**2==(i+100):
i2=int(sqrt(i+268))
if i2**2==(i+268):
print(i, i1, i2)
另外一位用round的才是更合理的。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个数能算出来的么?我咋没算出来啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询