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监控网卡流量并使用graphite绘图的示例
Apr 27 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
Python中用于计算对数的log()方法
May 15 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
python 检查文件mime类型的方法
Dec 08 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
python多进程并发demo实例解析
Dec 13 Python
python 字典套字典或列表的示例
Dec 16 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
python爬虫要用到的库总结
Jul 28 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编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
PHP查看当前变量类型的方法
2015/07/31 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python计算书页码的统计数字问题实例
2014/09/26 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
python实例化对象的具体方法
2020/06/17 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
办理护照介绍信
2014/01/16 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
英语专业求职信
2014/07/08 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2015中学学校工作总结
2015/07/20 职场文书
养成教育工作总结
2015/08/13 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers