快好知 kuaihz

求100000内的素数 效率问题

"""

求100000内的素数

从2 开始到自身的-1的数中找到一个能整除的=> 从2开始到自身开平方的数中找到一个能整除的

一个合数可以分解成几个素数的的乘积,也就是说,一个数如果能被一个素数整除就是合数

"""

import datetime

##################方法一  找10万以内素数运算 总计算次数:9592,素数的个数总量:9592 runtime: 0.591973 总循环次数1345442  ##############################

n=100000

l1=[2]

count=1

forcounter=0

starttime=datetime.datetime.now()

for i in range(3,n,2):

for j in range(3,(int(i**0.5)+1),2):

forcounter += 1

if i%j==0:

break

else:

l1.append(i)  #加入列表总共花了0.3秒

count+=1

# print("总计算次数:{},素数的个数总量:{}".format(count,len(l1)))

endtime=datetime.datetime.now()

runtime=(endtime-starttime).total_seconds()

print("总计算次数:{},素数的个数总量:{}".format(count,len(l1)))

print("runtime:",runtime)

# print(l1)

print(forcounter)

print("#####################################################################")

##################方法二  找10万以内素数运算 总计算次数:9592,素数的个数总量:9592 untime: 0.591973 总循环次数 2562373##############################

n=100000

l1=[2,3]

count=2

forcounter=0

starttime=datetime.datetime.now()

for num in range(4,n):

if num%6!=1 and num%6!=5:

continue

else:

snum=int(num**0.5+1)

for i in range(5,snum):

forcounter += 1

if not num%i:

break

else:

l1.append(num)

count+=1

endtime=datetime.datetime.now()

runtime=(endtime-starttime).total_seconds()

print("总计算次数:{},素数的个数总量:{}".format(count,len(l1)))

print("runtime:",runtime)

# print(l1)

print(forcounter)

print("#####################################################################")

#################方法三  找10万以内素数运算 总计算次数:9592,素数的个数总量:9592 untime: 0.591973 总循环次数46264478   ##############################

primenumber=[]

count=0

flag=False

st1=datetime.datetime.now()

for x in range(2,100000):

for i in primenumber:

count += 1

if  not x % i:

flag=True

break

# if i>=math.ceil(math.sqrt(x)):

if i**2>=x:

print("i=",i,"x=",x)

flag=False

break

if not flag:

primenumber.append(x)

en1=datetime.datetime.now()

s=(en1-st1).total_seconds()

print(len(primenumber))

print(s,count

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:素数  素数词条  效率  效率词条  100000  100000词条  问题  问题词条