我刚刚开始学习Python,并开始做一些问题,只是为了帮助建立我的技能,但是我很困扰这个问题。其中正方形是两个平方和的数字列表
制作一个包含所有1000以下正整数的列表,其正方形可以表示为两个平方的和(即,整数p,其中p^2 = m^2 + n^2,其中m和n是大于0的整数。)
提示:有几种方法。你可能会发现有一个所有的平方数列表是有帮助的。 in运算符可能很有用。
下面是我想出来的,到目前为止的代码:
numbers=xrange(1001)
numbers_squared=[x**2 for x in numbers]
a=[]
for x in numbers_squared:
for b in numbers_squared:
if (x+b)**.5 <= 1001:
a.append(x+b)
print a
我不用它的问题是,Python的需要多年才能做这些计算(我已经等了大约十分钟,它仍然打印号码)。如何解决这个问题的任何提示将非常感激。
p.s.主要观点是使用列表。此外,提示将比解决方案本身更受赞赏。
谢谢!
那么,作为一个,你可以将第二个循环限制在x以下的数字。例如“8 ** 2 = 64”不能表示为大于“64”的任何数字的总和。 –
你给了多少这样的数字? – inspectorG4dget
我在想,但我不知道如何用Python编写。感谢提示:D – Dizzle