首页 > 解决方案 > Python for 循环在近百万次迭代后无故停止

问题描述

我一直在尝试解决 Project Euler,但我被困在第三个问题上。我正在使用 python 来查找给定数字的最大素数。我尝试了for循环,然后尝试了while循环。这两个循环都适用于小数字,但不适用于大数字。循环在达到接近百万次迭代时停止。

可能有另一种解决问题的方法,但我的问题是,为什么循环会突然停止?

找到给定数的最大素数

使用 for 循环

prime_lst = []
prime_fac = 0
number = 600851475143
for i in range(2,int(number/2)):
    if number%i == 0:
        for j in range(2,i):
            if i%j == 0:
                prime_fac += 1
        if prime_fac < 1:
            print(i)
            prime_lst.append(i)
print(prime_lst[len(prime_lst)-1])

使用 while 循环

def prim_fac(n):
    i = 2
    prime_fac = []
    prime_num = 0
    while i < n:
        if n % i == 0:
            j = 2
            while j < i:
                if i % j == 0:
                    prime_num += 1
                j += 1
            if prime_num < 1:
                prime_fac.append(i)
        i += 1
    print(prime_fac[len(prime_fac)-1])

pri_fac(600851475143)

标签: pythonfor-loopwhile-loopprime-factoring

解决方案


推荐阅读