求素数,不知道错哪的,🆘

img


实在没想明白错哪的。提个问题是真的麻烦,有点无语,真的服了,我的个亲娘

你这不是死循环了么,break只能跳出for 循环,上面还有一层while 循环啊,如果有用,请采纳!

你这while循环是个标准死循环啊
什么时候停呢

  1. 单从代码角度来看 while True 没有跳出循环的代码,是一个死循环
  2. 再来看你写的这个算法,m代表了要求的数,然后来判断m是否为素数,然后如果是素数则加入o[],理解的应该没错吧。n这个变量在for循环里一直在 += 1,也就是一直在变大,没有回归初值,因此就算你解决了“问题1”,依然是得不到正确的答案的。其实本身这个n就是个多余的变量,利用for-i中的i就行了
def prime(n):
    def isprime(x):
        if x<4:
            return x>1
        for i in range(2,x):
            if x%i==0:
                return 0
        return 1
    p = []
    i = 0
    while len(p)<n:
        i += 1
        if isprime(i):
            p.append(i)
    return p[-1]