求1000000以内的素数

理论依据:

任何大于等于1的数都可以表示为素数的乘积

这其实是素因式分解的唯一性定理。
若一个数n是素数,显然成立。
若n是合数,则必然可分解成大于1小于n的2个数的乘积,若均是素数,刚好得证,否则其中的合数可再分成范围更小的两个数的乘积,直到都是素数为止。所以n是合数时也成立。
综上得证。
注:0,1既不是素数也不是合数

所以不妨把从2开始的每一个结果作为除数,让下一个数来依次除以它们,如果都除不尽说明这个数就是素数了,再把它加入到素数集

import time

start = time.time()
sushu = [2]
for x in range(1,1000000):
    if x<2:
        continue
    for i in range(0,len(sushu)):
        if x%sushu[i] == 0:
            break
    else:
        sushu.append(x)
print(sushu)
end = time.time()
print(end-start)

关于效率:

计算100000以内的素数用时6s出头,计算1000000以内的素数用时就比较久了,用了426s,至于要算更大数目以内的素数估计就不能用这个了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值