我被檢查的http://projecteuler.net/尋找最大素因子(最快程序可能)
的問題,第三個問題是:
的13195的首要因素是5,7,13和29.最大的 數字600851475143的主要因素是什麼?
我的解決方案代碼如下。但是,我認爲這需要數週才能完成,所以速度非常緩慢。 我該如何改進它?或者是Python本身太慢而無法解決這個問題?
def IsPrime(num):
if num < 2:
return False
if num == 2:
return True
else:
for div in range(2,num):
if num % div == 0:
return False
return True
GetInput = int (input ("Enter the number: "))
PrimeDivisors = []
for i in range(GetInput, 1, -1):
print(i)
if GetInput % i == 0 and IsPrime(i) is True:
PrimeDivisors.append(i)
break
else:
continue
print(PrimeDivisors)
print("The greatest prime divisor is:", max(PrimeDivisors))
對於初學者,您只需進行測試,直到您搜索因子的數字的平方根爲止。 – shuttle87
[這是我見過的最快的python實現](http://code.activestate.com/recipes/117119-sieve-of-eratosthenes/) – thefourtheye
@ shuttle87,你只需要測試奇數(除了2 )。 –