我已将以下代码编写为找到数字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)))
答案 0 :(得分:0)
这段代码很快
num = 600851475143
factor = 2
while num > 1:
while num % factor == 0:
num = num//factor
factor+=1
print(factor - 1)
取数字并开始重复除以整数(从2开始),直到你不能。现在尝试下一个整数然后下一个等等......
您可以划分factor
的最后num
将是最大的素数。
点击后非常明显。有趣解决问题:))