我制作了这个素数生成器,但它只打印每个数字(1,2,3 ......)。
我知道还有其他问题,但我不明白其中任何一个。以下是我到目前为止的情况:
x = 1
y = 1
while x >= y:
if x % y == 0:
print(x)
x = x + 1
y = 1
else:
y = y + 1
y = 1
答案 0 :(得分:0)
有一种叫做橡皮鸭测试的东西,你可以一步一步地向橡皮鸭解释你的代码。它迫使你走过每一步,你经常会发现错误。在这种情况下,请考虑x%y
时的y是什么。您第一次看到y=1
时会看到它。因此,它会循环遍历循环,将x递增1,y将保持设置为1. x%y
y=1
始终为... {/ p>
答案 1 :(得分:0)
从我的问题来看,我认为,尝试这样做会更好:
n = 10
i = 2
while i < n :
prime = 1 # reset the `prime` variable before the inner loop
for a in range(2, i):
if i%a == 0:
prime = 0
break
if prime:
print (i)
i += 1
输出:
2
3
5
7