寻找最大素因的Python代码太慢了。有什么错误?

时间:2019-01-29 21:49:09

标签: python math

试图解决问题:“找到最大的素数600851475143”

我正在尝试解决欧拉计划的第三个问题。由于我才刚刚开始,所以我的代码仍然很糟糕,并且我对语言不了解很多。非常感谢您的评论。谢谢!

num = 600851475143
ans3 = []

primes = [x for x in range(num) if x % 2 != 0 and
                                x % 3 != 0 and
                                x % 4 != 0 and
                                x % 5 != 0 and
                                x % 6 != 0 and
                                x % 7 != 0 and
                                x % 8 != 0 and
                                x % 9 != 0 and
                                x % 11 != 0 and
                                x % 13 != 0 and
                                x % 17 != 0 and
                                x % 19 != 0 and
                                x % 23 != 0 and
                                x % 29 != 0 and
                                x % 31 != 0]
primes.insert(1, 2)
primes.insert(2, 3)
primes.insert(3, 5)
primes.insert(4, 7)
primes.insert(5, 11)
primes.insert(6, 13)
primes.insert(7, 17)
primes.insert(8, 19)
primes.insert(9, 23)
primes.insert(10, 29)
primes.insert(11, 31)
primes.pop(0)

for x in primes:
if num % x == 0:
    ans3.append(x)

print(ans3)

我不知道答案,但是它在较小的数字下效果很好(例如示例13195,输出29)。

0 个答案:

没有答案