文章目录
🤡前言🤡
💟素数筛问题描述💞
💟新手筛💞
💙问题分析💙
💙代码实现💙
import time
n=int(1e6)
ans=0
def sieve(n):
for i in range(2,n):
if n%i==0:
return False
return True
start=time.time()
for i in range(2,n):
if sieve(i):
ans+=1
end=time.time()
print(f"阶乘结果{ans}用时{end-start}")
💟新手优化筛💞
💜问题分析💜
💜代码实现💜
import time
n=int(1e6)
ans=0
def sieve(n):
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
return False
return True
start=time.time()
for i in range(2,n):
if sieve(i):
ans+=1
end=time.time()
print(f"阶乘结果{ans}用时{end-start}")
💟埃氏筛💞
🤍问题分析🤍
🤍代码实现🤍
import time
n=int(1e6)
ans=0
start=time.time()
ans=[False]*(n+1)
ans[0]=False
ans[1]=True
for i in range(2,int(math.sqrt(n+1)+1)):
if not ans[i]:
for j in range(i*i,n+1,i):
ans[j]=True
end=time.time()
print(f"阶乘结果{n-sum(ans)}用时{end-start}")
💟欧拉筛(线性筛)💞
💗问题分析💗
💗代码实现💗
import time
n=int(1e6)
ans=0
start=time.time()
ans=[False]*(n+1)
ls=[]
ans[1]=True
s=0
for i in range(2,n+1):
if not ans[i]:
ls.append(i)
s=len(ls)
for j in range(s):
if i*ls[j] >n:
break
ans[i*ls[j]]=True
if i%ls[j]==0:
break
end=time.time()
print(len(ls),end-start)