我有一个有关欧拉计画#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")
答案 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))