+-
Python“OverflowError”
我刚开始学习用 Python编写代码.我正在尝试编写一些代码来回答这个Project Euler问题:

13195的主要因素是5,7,13和29.

600851475143的最大主要因素是什么?

我的程序适用于13195的测试用例,但是当我尝试输入600851475143时,我收到错误:“OverflowError:range()结果有太多项目”
有谁知道我怎么解决这个问题?

这是我的代码:

class Euler3:
    "A class to find the largest prime factor of a given number"
     n = 600851475143
     primeFactors = []
     for i in range(2,n):
         if (n%i ==0):
            primeFactors.append(i)
            n = n/i
            i = i -1 #reset i
     print primeFactors

任何帮助或建议将不胜感激!

最佳答案
范围函数创建一个列表并尝试将其存储在内存中.创建一个很长的列表是造成OverflowError的原因.你可以使用xrange来获得一个按需生成数字的生成器.

也就是说,我认为你会发现你的算法对于计算大质数而言太慢了.有很多素数算法,但我可能会建议将Sieve of Eratosthenes作为起点.

编辑:正确xrange实际上不返回生成器,但xrange对象的行为很像生成器.我不确定你是否在乎,但这让我觉得我不准确!

点击查看更多相关文章

转载注明原文:Python“OverflowError” - 乐贴网