如何在Python中高效执行此代码? (关于欧拉计划3)

时间:2019-05-31 08:12:26

标签: python

我有一个有关欧拉计画#3的算法。尽管它适用于13195,但不适用于该值600851475143。我的错在哪里?

K=600851475143
L=2

while L<K:
    if K%L == 0:
        num = L

        if num > 1:

            for i in range(2, num):
                if (num % i) == 0:
                    break
            else:
                num2=num

        else:
            print(num, "is not a prime number")

    L+=1
print(num2, "is the largest prime number")

1 个答案:

答案 0 :(得分:0)

我无法理解您的代码,这是我的解决方案,请尝试提供更有意义的名称,这将对您有所帮助。

def isPrime(number):
    flag = True
    for divisor in range(2, number):
        if number % divisor == 0:
            flag = False
            break
    return flag

prime_factor_product = 1
prime_factor_list = []
target = 600851475143
divisor = 1
while prime_factor_product < target:
    if target % divisor == 0:
        prime_factor_product *= divisor
        if isPrime(divisor):
            prime_factor_list.append(divisor)
    divisor += 1
print(prime_factor_product, max(prime_factor_list))