Python 3.x Python:如何减少Python中的计算时间

Python 3.x Python:如何减少Python中的计算时间,python-3.x,time,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

我编写了以下代码来查找数字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)))

这个代码相当快

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

print(factor - 1)
取这个数字,开始反复除以整数(从2开始),直到不能再除以为止。现在尝试下一个整数,然后是下一个,依此类推。。。 最后一个可以用来划分数值的
因子将是最大素数


一旦点击就很明显了。享受解决问题的乐趣:)

哦,哇!这是一个非常优雅的解决方案。谢谢有比这更有效的方法。你可以做得更好。谢谢。我会坚持下去的。