python求质数的3种方法


Posted in Python onSeptember 28, 2018

本文为大家分享了多种方法求质数python实现代码,供大家参考,具体内容如下

题目要求是求所有小于n的质数的个数。

求质数方法1:

穷举法:
根据定义循环判断该数除以比他小的每个自然数(大于1),如果有能被他整除的就不是质数:

def countPrimes1(self, n):
  """
  :type n: int
  :rtype: int
  """
  if n<=2:
   return 0
  else:
   res=[]
  for i in range(2,n):
   flag=0 # 质数标志,=0表示质数
   for j in range(2,i):
    if i%j ==0:
     flag=1
   if flag==0:
    res.append(i)
  return len(res)

求质数方法2:

利用定理:如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。所以判断一个数是否是质数,只需判断它是否能被小于它开根后的所有数整除。这样做的运算会少很多。

def countPrimes2(self, n):
  if n<=2:
   return 0
  else:
   res=[]
  for i in range(2, n):
   flag=0
   for j in range(2, int(math.sqrt(i))+1):
    if i % j == 0:
     flag = 1
   if flag == 0:
    res.append(i)
  return len(res)

求质数方法3:

利用定理:如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。我们可以发现只要尝试小于等于平方根的所有数即可。列举从 3 到根号x的所有数,还是有些浪费。比如要判断101是否质数,101的根号取整后是10,需要尝试的数是1到10。但是可以发现,对9的尝试是多余的。不能被3整除,必然不能被9整除……顺着这个思路走下去,其实,只要尝试小于根号x的质数即可。而这些质数,恰好前面已经算出来了,已经存在res中了。

def countPrimes3(self, n):
  if n <= 2:
   return 0
  else:
   res = []
  for i in range(2, n):
   flag = 0
   for j in res:
    if i % j == 0:
     flag = 1
   if flag == 0:
    res.append(i)
  return len(res)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符串处理函数简明总结
Apr 13 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
Python单元测试简单示例
Jul 03 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
Python如何用filter函数筛选数据
Mar 05 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Python如何实现远程方法调用
Aug 07 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 Python
python数据结构学习之实现线性表的顺序
Sep 28 #Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 #Python
使用Python处理BAM的方法
Sep 28 #Python
python版本单链表实现代码
Sep 28 #Python
python实现反转部分单向链表
Sep 27 #Python
python八皇后问题的解决方法
Sep 27 #Python
python判断数字是否是超级素数幂
Sep 27 #Python
You might like
php 获取select下拉列表框的值
2010/05/08 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
详解Angular2响应式表单
2017/06/14 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
Python检测网络延迟的代码
2018/05/15 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
Django操作session 的方法
2020/03/09 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
银行实习生的自我评价
2014/01/13 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
商务英语求职信范文
2015/03/19 职场文书
停发工资证明范本
2015/06/12 职场文书
自考生自我评价
2019/06/21 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记