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实现bitmap数据结构详解
Feb 17 Python
python 网络编程常用代码段
Aug 28 Python
用Python shell简化开发
Aug 08 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
Python并发:多线程与多进程的详解
Jan 24 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
使用Django清空数据库并重新生成
Apr 03 Python
python同时遍历两个list用法说明
May 02 Python
Python实现双向链表
May 25 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 insert语法详解
2008/06/07 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Django分页功能的实现代码详解
2019/07/29 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
Python如何定义接口和抽象类
2020/07/28 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
班组长安全职责
2014/01/05 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
项目经理聘任书
2014/03/29 职场文书
爱与责任演讲稿
2014/05/20 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
原生JS实现分页
2022/04/19 Javascript