题目要求:PrimeGeneratorhttp://www.spoj.com/problems/PRIME1/要求计算最多10组,每组由两个数m,n构成(1<=m<=n<=1000000000,n-m<100000),要求打印出m,n之间的所有素数(包括m,n),时间限制6s。下面是我采用筛法写的python代码,但是仍然超时,到底是哪里错了呢?我写的代码:frommathimportsqrtdefPrimeGenerator():n=input()a=range(n)foriinrange(n):a[i]=raw_input().split()foraaina:start=int(aa[0])end=int(aa[-1])length=end-start+1l=[True]*lengthforiinrange(2,int(sqrt(end))+1):#筛子ifstart==1:#排除1k=i*2whilek<=end:l[k-start]=Falsek+=il[0]=Falseelifstart==2:#2是素数k=i*2whilek<=end:l[k-start]=Falsek+=ielse:#有一些下限值小于筛子的情况k=start<=iandi*2ori*(start/i)whilek<=end:ifk>=start:l[k-start]=Falsek+=iforiinrange(length):ifl[i]:printi+startPrimeGenerator()
九州编程
相关分类