Python:如何减少python中的计算时间

时间:2017-12-01 11:45:48

标签: python-3.x time

我已将以下代码编写为找到数字600851475143 的最大素数因子,但计算时间过长。有什么办法可以减少计算时间。谢谢!

def factor(n):
    answer = [] 
    for i in range(1,(n//2) + 1):
        if n%i == 0:
            print(i)
            answer.append(i)
    return answer        

def prime_factor(n):
    l = n[:]     
    for i in n:
        for j in range(2,i):
            if i%j == 0:
                l.remove(i)
                break
    return l  
print(prime_factor(factor(600851475143)))

1 个答案:

答案 0 :(得分:0)

这段代码很快

num = 600851475143
factor = 2 
while num > 1:
    while num % factor == 0:
        num = num//factor
    factor+=1

print(factor - 1)

取数字并开始重复除以整数(从2开始),直到你不能。现在尝试下一个整数然后下一个等等...... 您可以划分factor的最后num将是最大的素数。

点击后非常明显。有趣解决问题:))