#!/usr/bin/env python3
import datetime
def susu(n):
sulist=[2,3]
if n ==2:
return sulist
m = 3
i=2
while len(sulist)<n:
add=1
if m==sulist[-1]:
m +=2
for i in sulist:
if m%i==0 and i<=sulist[-1]//2:
m+=2
add=0
break
if add:
sulist.append(m)
return sulist
N=1000
begintime=datetime.datetime.now()
for x in susu(N):
#print(x,end = ' ')
pass
# print(susu(N))
endtime=datetime.datetime.now()
print('susu时间:',endtime - begintime)
def _odd_iter():
n = 1
while True:
n = n + 1
yield n
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
it = _odd_iter() # 初始序列
while True:
n = next(it) # 返回序列的第一个数
yield n
it = filter(_not_divisible(n), it) # 构造新序列
begintime=datetime.datetime.now()
i=0
for n in primes():
i+=1
# print(n,end=' ')
if i >N-1:
break
endtime=datetime.datetime.now()
print('primes1时间:',endtime - begintime)
def _odd_iter():
n = 5
while True:
yield n
n = n + 2
yield n
n=n+4
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
yield 3
it = _odd_iter() # 初始序列
while True:
n = next(it) # 返回序列的第一个数
yield n
it = filter(_not_divisible(n), it) # 构造新序列
begintime=datetime.datetime.now()
i=0
for n in primes():
i+=1
# print(n,end=' ')
if i >N-1:
break
endtime=datetime.datetime.now()
print('primes时间:',endtime - begintime)
input()
我以前比较素数的算法速度的,自己修改一下吧,复制时注意标点和缩进