python脚本11_求10万以内所有素数

#求10万以内所有素数

num = int(input(">>>"))
strs = ''

for i in range(2,num):
    for c in range(2,int(i**0.5)+1):
        if i%c == 0:
            break
    else:
        strs += str(i)+' '
print(strs)

方法2:

print(2)

for i in range(3,100001,2):
    if i>10 and i%10 == 5:
        continue
    else:
        for j in range(2,int(i**0.5+1)):
            if i%j == 0:
                break
        else:
            print(i)

方法3:

#求10万以内所有素数
#此题的目的是为了让大家注意效率问题
#思考:为什么到一个数的一半就可以了

for a in range(2,100000):
    for b in range(2,int(a**0.5)+1):
        if a%b == 0:
            break
    else:
        print(a)

 

方法4:

#求10万以内所有素数
#此题的目的是为了让大家注意效率问题

for a in range(3,100000,2):
    for b in range(3,int(a**0.5)+1,2):
        if a%b == 0:
            break
    else:
        print(a)

 

比较两种算法的效率:

#两种算法的对比的完整代码 

import datetime

upper_limit = 100000
delta = [0,0]
counts = [0,0]

start = datetime.datetime.now()
for _ in range(10):
    count[0] = 0
    for x in range(2,upper_limit):
        for i in range(2,int(x**0.5)+1):
            if x % i == 0:
                break
        else:
            #print(x)
            counts[0] += 1
delta[0] = (datetime.datetime.now() - start).total_seconds()


start = datetime.datetime.now()
for _ in range(10):
    counts[1] = 1
    #print(2)
    for x in range(3,upper_limit,2):
        for i in range(3,int(x**0.5)+1,2):
            if x % i == 0:
                break
        else:
            #print(x)
            counts[1] += 1
delta[1] = (datetime.datetime.now() - start).total_seconds()

print(delta, sep="\t")
print(conuts, sep="\t")

 

转载于:https://www.cnblogs.com/KunGe-13/p/10204991.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值