在Python中找到最大的素数因子太慢了

时间:2015-08-07 05:09:09

标签: python-3.x

问题:

  

13195的主要因素是5,7,13和29。   600851475143的最大主要因素是什么?

我试图通过使用下面的代码解决它,它需要很长时间才能运行。有没有最好的方法来解决这个问题?

def find_prime(num, ranger):
    count  = 0
    prime = True
    for i in range(2, num):
        if num % i == 0:
            count = count + 1
        if count > 1:
            prime = False
            return prime
    return prime            

prime_list = [] 
target = 600851475143
for i in range(2,target ):
    if target % i == 0:
        print(i)
        if find_prime(i,target) and i % 2 == 0:
            prime_list.append(i)
            print(prime_list)

print(max(prime_list))

请建议。

1 个答案:

答案 0 :(得分:4)

n=600851475143 
d=2
while d < n/d:
    if n%d==0:
        n/=d
    else:
        d+=1
print n