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自动化测试实例解析
Sep 28 Python
python实现带验证码网站的自动登陆实现代码
Jan 12 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Python建立Map写Excel表实例解析
Jan 17 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
Python之csv文件从MySQL数据库导入导出的方法
Jun 21 Python
Anaconda下配置python+opencv+contribx的实例讲解
Aug 06 Python
python实现飞机大战微信小游戏
Mar 21 Python
python中的for循环
Sep 28 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
Python进程池与进程锁之语法学习
Apr 11 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生成图形(Libchart)实例
2013/11/06 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
php从字符串创建函数的方法
2015/03/16 PHP
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
python练习程序批量修改文件名
2014/01/16 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
Python Flask-web表单使用详解
2017/11/18 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python取均匀不重复的随机数方式
2019/11/27 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
C语言笔试集
2012/07/24 面试题
致百米运动员广播稿
2014/01/29 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
个人工作主要事迹
2014/05/08 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
2015年保送生自荐信
2015/03/24 职场文书
校园之声广播稿
2015/08/18 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android