我试图解决以下问题:从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
由于
答案 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
这应该可以解决你的内存错误。也就是说,对于这个特定问题有一个更快的解决方案(但是,你要求'使用相同的逻辑')。
*实际上是一个序列对象