-1
我的for循环似乎不会中断for循环并转到下一个d值。如果范围是10000,则需要0.5秒,如果是100000,则需要0.8秒?但范围不应该的问题时,它应该打破长期获得上述100 这里是我的代码之前:中断似乎没有打破for循环
import math
d = 1
l = {}
while d < 10:
for y in range(0, 10000):
x = y * math.sqrt(d)
x = round(x)
if x**2 - (d * y**2) == 1:
l[d] = x
print("x: " + str(x) + " d: " + str(d) + " y: " + str(y))
break
d += 1
m = max(l, key=l.get)
print("d", m, " :-: x", l[m])
这里就是它输出:
x: 3 d: 2 y: 2
x: 2 d: 3 y: 1
x: 9 d: 5 y: 4
x: 5 d: 6 y: 2
x: 8 d: 7 y: 3
x: 3 d: 8 y: 1
d 5 :-: x 9
>[Finished in 0.8s]
'break'正常工作,但是每次'while'迭代都会启动一个新循环。 –
哦,你是对的,我没有注意到它只输出六个结果,而不是十个输出。 – Sorrells
'while'循环迭代* 9次(1到9)。因此,对于{1,4,9}中的'd',似乎没有任何'x ** 2 - (d * y ** 2)== 1'为真的点,并且测试了整个范围。 –