#返回类型:列表
#说明:返回小于upperBound的所有素数
def ouLaShai(upperBound):
filter=[False for i in range(upperBound+1)]
primeNumbers=[]
for num in range(2,upperBound+1):
if not filter[num]:
primeNumbers.append(num)
for prime in primeNumbers:
if num*prime>upperBound:
break
filter[num*prime]=True
if num%prime==0: #这句是最有意思的地方 下面解释
break;
return primeNumbers
def test():
correctResult_30=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
ouLaShaiResult_30=ouLaShai(30)
if(ouLaShaiResult_30==correctResult_30):
print('correct')
else:
print('wrong')
if __name__=='__main__':
test()
if num%prime==0 这句我苦思冥想许久,在此将想法分享给大家。
假设没有这句话,程序依然能得到正确的结果,只不过是有很多无用的筛选。</