2019/09/16 01-质数多种解法及效率

在这里插入图片描述
100以内的素数
只要找到除了1和自身能被正处的数就是合数
在这里插入图片描述
打印放到内部其实也是比较浪费时间的在这里插入图片描述
100以内是25个素数在这里插入图片描述
也可以不这么做,可以直接输出的
1号算法
在这里插入图片描述
其实还有地方改进
奇数才有可能是素数,偶数里,除了2,其他应该都不是素数把
(一个偶数最后除以2,带最后一定是奇数,所以一个合数就是好几个质数的乘积)

把2去掉了,就需要加一个

在这里插入图片描述
只选择奇数,效率就提高很多在这里插入图片描述
在这里插入图片描述
如果是个合数一定可以找到拿质数把你整除的,因为合数等于几个质数乘积在这里插入图片描述
这两个break意思不一样
x% i ==0 说明找到了合数x
如果大于 x
0.5 相当于找到了质数x,都找到开方值还没整除,就是质数
下面else也是找到了质数x
下面就是重复了**在这里插入图片描述
假定一上来,认为x不是质数,设定一个flag
相当于知道了以前的计算结果,就利用了以前的计算结果,能用到以前的结果会大大减少复杂度
合数可以分成几个质数的乘积,质数除了1和本身没有办法分解了

在这里插入图片描述
使用datetime,查看效率在这里插入图片描述
记得加括号
在这里插入图片描述在这里插入图片描述
加括号
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
1000的效率
在这里插入图片描述
100000的效率
在这里插入图片描述在这里插入图片描述
现在优化过的速度反而慢就说明,因为每次i循环,x0.5这个值都需要重新算一边**在这里插入图片描述
修改开方位置,每次只进去计算一次在这里插入图片描述
再次比较,如果我们使用上一次的值,这样的计算时间大大减少在这里插入图片描述
质数的一些性质,大于3的素数只有6n-1和6n+1两种形式
代表大于3的素数一定在6的倍数的前后,17,18,19
在这里插入图片描述
https://baike.baidu.com/item/质数/263515?fr=aladdin

概念是这么说的,6的倍数的前后两个数都是质数的话,这一对质数称为孪生质数,
在这里插入图片描述
range函数边界值计算一次,从哪开始到哪结束
在这里插入图片描述
这个步长我们自己来定一下在这里插入图片描述
x<n作为循环条件
在这里插入图片描述
算法一样,但是你的语句多,相对来讲是要耗时多一点
有些排序算法就是,各个场景不同,有的时候占优势,有的时候不占优势

如果把上次质数的计算结果带入进来,会大大提高效率

第一层循环如果没有优化那就找第二层循环,使用上次的结果
在这里插入图片描述在这里插入图片描述
利用已有的质数列表,效率不差
在这里插入图片描述
这个速度最快
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值