Diz*_*zle 7 python numbers sum perfect-square python-2.7
我刚刚开始学习Python并且已经开始做一些问题只是为了帮助提高我的技能,但是我非常坚持这个问题.
制作一个包含所有高达1000的正整数的列表,其正方形可以表示为两个正方形的和(i,例如,整数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
Run Code Online (Sandbox Code Playgroud)
我得到的问题是Python需要数年才能完成这些计算(我等了大约十分钟,它仍在打印数字).任何关于如何解决这个问题的提示都将非常感激.
ps重点是使用列表.此外,提示将比解决方案本身更受欢迎.
谢谢!
列表理解怎么样?计算范围 (1,1011) 中的 c 范围 (1, c) 中的 b 范围 (1, b) 中的 a
如下:
x = [(a,b,c) for c in range(1,1001) for b in range(1, c) for a in range(1,b) if a**2+b**2==c**2]
print x
Run Code Online (Sandbox Code Playgroud)
我已经对此进行了计时,在我的计算机上完成需要 46 秒
| 归档时间: |
|
| 查看次数: |
3641 次 |
| 最近记录: |