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中截取字符函数strip,lstrip,rstrip
Jul 17 Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 Python
对Python中内置异常层次结构详解
Oct 18 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
Python利用FFT进行简单滤波的实现
Feb 26 Python
Python安装OpenCV的示例代码
Mar 05 Python
python学生管理系统的实现
Apr 05 Python
序列化Python对象的方法
Aug 01 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
python实现监听键盘
Apr 26 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文件上传类分享
2014/11/18 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
Yii框架安装简明教程
2020/05/15 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
Js 中debug方式
2010/02/07 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python中扩展包的安装方法详解
2017/06/14 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
python输入多行字符串的方法总结
2019/07/02 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
python 字典访问的三种方法小结
2019/12/05 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
python中np是做什么的
2020/07/21 Python
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
20岁生日感言
2014/01/13 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
质量安全标语
2014/06/07 职场文书
全运会口号
2014/06/20 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
校运会通讯稿
2015/07/18 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python