Python:ProjectEuler Q.5

时间:2014-05-04 06:53:40

标签: python

我试图解决以下问题:从1到20的所有数字均可被整除的最小正数是多少?问题是我得到MemoryError。有没有更好的方法来做到这一点,使用相同的逻辑

for n in range(1,1000000000):
    count = 0
    for i in range(1,21):
        if n%i == 0:
            count = count + 1
            if count == 20:
                print n

由于

1 个答案:

答案 0 :(得分:3)

假设您使用的是Python 2,range会分配一个列表。

利用Python对生成器*的懒惰能力,并改为使用xrange

for n in xrange(1,1000000000):
    count = 0
    for i in xrange(1,21):
        if n%i == 0:
            count = count + 1
            if count == 20:
                print n

这应该可以解决你的内存错误。也就是说,对于这个特定问题有一个更快的解决方案(但是,你要求'使用相同的逻辑')。

*实际上是一个序列对象