我被检查的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 )。 –