问题描述
这是我尝试在Python中解决Project Euler's third problem的代码:
13195的主要因子是5、7、13和29。
600851475143的最大素数是多少?
由于某种原因,这没有给出答案。我知道有一个双for循环,效率很低,但是我不知道程序是否仍在运行并尝试计算,或者是否有错误。甚至可能是嵌套for循环中的中断打破了所有for循环。如何使用此代码更有效?我并不是要直接完全重写我的代码,但是一点点的零碎都是很棒的。 (还有一些提示。...!)
def prime_selector(primed_num):
factors = []
prime_factors = []
for x in range(1,primed_num + 1):
if primed_num % x == 0:
factors.append(x)
for i in factors:
if i > 1:
for j in range(2,i):
if i % j == 0:
break
else:
prime_factors.append(i)
prime_factors.sort(reverse=True)
print(prime_factors[0])
prime_selector(600851475143)
解决方法
我建议尝试不同的方法。 例如,数字825。 是3 5 5 * 11。最大的素数是11。 但是您可以使用其他方法来实现。
825不能除以2,但可以除以3。因此825/3 = 275。
275不能除以3或4,但可以除以5。275/5 = 55。
再次55 5. 55/5 = 11。
11不能除以本身不是5的任何数字。因此是素数。
这是一个暗示的答案。如果您需要它,我可以给您代码。