在无限循环中查找特定素数的程序

Program to find a specific prime number end in an infinite loop

大家好,我有一个问题,我为 projecteuler 编写了这段代码来查找特定的素数,但是 它以无限循环结束我查了一下并找到了许多替代方案,但想了解为什么这段代码只是起作用。我是编程新手,所以如果您有任何建议可以改进我的代码,我将不胜感激。

import math

x = 1   #number that is getting checked
y = 0   #indicator of how many prime numbers found
a = 0   #the most recent prime number
while y < 6:    
    for i in range (2, int(math.sqrt(x))):
        if (x % i ) == 0:
            x = x + 1
            break
        else:
            a = x
            x = x + 1
            y = y + 1
        break
print (a)

你输入 x = 1,然后从 2 开始循环 range:所以 for 永远不会执行,而 while 无限循环。您需要从 x = 2 开始,或者处理 x = 1

的特殊情况

编辑 该代码适用于 x 至少 9:for 循环永远不会执行,直到 int(math.sqrt(x)) 至少为 3