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实现简单QQ单用户机器人的方法
Jul 03 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
python中单下划线_的常见用法总结
Jul 10 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
ipad上运行python的方法步骤
Oct 12 Python
python文件读写代码实例
Oct 21 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python序列类型的打包和解包实例
Dec 21 Python
Python统计时间内的并发数代码实例
Dec 28 Python
django rest framework使用django-filter用法
Jul 15 Python
Python使用openpyxl复制整张sheet
Mar 24 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备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
使用node-media-server搭建一个简易的流媒体服务器
2021/01/20 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
浅析python标准库中的glob
2020/03/13 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
高级电工工作职责
2013/11/21 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
运动会广播稿20字
2015/08/19 职场文书
Python如何让字典保持有序排列
2022/04/29 Python