这是我对Project Euler Problem 3的解决方案
def max_prime(x):
for i in range(2,x+1):
if x%i == 0:
a = i
x = x/i
return a
max_prime(600851475143)
它运行起来需要太多的时间。有什么问题吗?
发布于 2019-06-04 08:32:52
您的解决方案试图迭代到600851475143,这是不必要的。你只需要迭代到最大素因数的平方根。
from math import sqrt
def max_prime_factor(x):
i = 2
while i ** 2 <= x:
while x % i == 0: # factor out ALL multiples of i
x //= i
i += 1
return x
print(max_prime_factor(600851475143))
https://stackoverflow.com/questions/36133135
复制相似问题