Python 3.x Python:如何减少Python中的计算时间
我编写了以下代码来查找数字600851475143的最大素数因子,但计算时间太长。我能做些什么来减少计算时间吗。谢谢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
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开始),直到不能再除以为止。现在尝试下一个整数,然后是下一个,依此类推。。。
最后一个可以用来划分数值的因子将是最大素数
一旦点击就很明显了。享受解决问题的乐趣:)哦,哇!这是一个非常优雅的解决方案。谢谢有比这更有效的方法。你可以做得更好。谢谢。我会坚持下去的。