无法在python中找到素数代码中的错误

时间:2013-11-14 15:57:30

标签: python python-3.x primes

n=5;count=2;i=3;j=2;
while (count <= n):
    for j in range (2,i):
            if(i%j == 0):           
                break
    if(j==i):
        print i
        count = count +1
    i = i+1

我试图找到前n个素数但不知何故这个代码似乎没有编译。 该程序陷入 for循环。 我尝试使用相同的逻辑在C中编写代码似乎工作正常,但因为我需要大量支持python似乎是一个明显的选择,因此想在python中运行。 任何帮助都会很棒。

4 个答案:

答案 0 :(得分:6)

range(a, b)a转到b-1

n=5;count=2;i=3;j=2;
while (count <= n):
    for j in range (2,i):
        if(i%j == 0):           
            break
    if(j==i-1):
        print i
        count = count +1
    i = i+1

我打赌你有

 int j;
 for(j = 2; j < i; j++) {
 }

因此,在素数的循环结束时,j将为i

使用range时,Python不会超出限制。

答案 1 :(得分:1)

这对于循环后else:关键字的其他模糊语法很有用。正如其他人所评论的那样,您成功完成for循环的测试是由一个人完成的。

相反,请尝试使用else来测试是否成功完成:

for j in range (2,i):
        if(i%j == 0):
            break
else:
    print i
    count = count +1

答案 2 :(得分:0)

您的问题在这里:

for j in range (2,i):

这检查j = 2,3,4 .... i-1。因此,您的代码永远不会运行:

if(j==i):
        print i
        count = count +1

所以伯爵永远不会改变。因此,你得到一个无限的循环。将支票更改为

if(j==i-1):
        print i
        count = count +1

答案 3 :(得分:0)

在Python 3中,它是print(),而不是print。更改此行时代码会编译:

        print(i)

你似乎也有一个无限循环,但我会让你调试它。