Python素数生成器打印出每个数字

时间:2017-10-07 12:44:31

标签: python numbers

我制作了这个素数生成器,但它只打印每个数字(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

2 个答案:

答案 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