为了加python群,研究了两天素数的筛法,写了一个可以筛素数的代码
#生成素数标志列表,筛选任意范围素数标志,把素数标志列表输出为素数。
def sushu(n):
'n为素数列表的长度,返回一个由0起始到n-1的素数标志列表,1为素数,0为非素数'
a=[1]*n
a[0],a[1]=0,0
for i in range(n):
if a[i]==1:
step = i
i+=step
while i
changdu:
x=changdu
else:
x=len(sushu)
for i in range(x):
if sushu[i]==1:
print(qishizhi+i)
def hege(sushu,qishizhi):
'输出素数标志列表内的素数个数及和,必须提供起始值。'
he = 0
ge = 0
for i in range(len(sushu)):
#print (i)
if sushu[i]==1:
ge += 1
he += qishizhi+i
return he,ge
def sushufou(sushu):
if sushu in [0,1]:
print('0和1不是素数')
return
if sushu==2:
print('是素数')
return
for i in range(2,sushu):
if i*i >sushu:
print( '是素数')
return
if sushu%i==0:
print( '不是素数,存在因数:',i)
return
a=sushu(200000)#生成200000内的素数标志列表
b=shai(a,10000000000,10000)#生成100亿到100亿零1万(不含)的素数标志列表,长度太长会死机,我的电脑8g内存,最长可以到5亿吧。
shuchu(b,10000000000,100)#输出b里面代表的素数,起始值是100亿,长度是100,就是输出100亿到100亿零100之间的素数。