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中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python中 map()函数的用法详解
Jul 10 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
详解python-图像处理(映射变换)
Mar 22 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
python集合能干吗
Jul 19 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 session 检测和注销
2009/03/16 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
限制文本字节数js代码
2007/03/06 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JavaScript 基本概念
2015/01/20 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
vue.js实现只弹一次弹框
2018/01/29 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
js实现微信聊天界面
2020/08/09 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
学校三八妇女节活动情况总结
2014/03/09 职场文书
投标诚信承诺书
2014/05/26 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
课程设计感想范文
2015/08/11 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL