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中运行。 任何帮助都会很棒。
答案 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)
你似乎也有一个无限循环,但我会让你调试它。