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下的常用下载安装工具pip的安装方法
Nov 13 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
使用pytorch进行图像的顺序读取方法
Jul 27 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
python实现简单多人聊天室
Dec 11 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
解决pytorch 数据类型报错的问题
Mar 03 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加速 eAccelerator配置和使用指南
2009/06/05 PHP
php while循环控制的简单实例
2016/05/30 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
python字符串连接方式汇总
2014/08/21 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
Python实现全角半角字符互转的方法
2016/11/28 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
python3实现弹弹球小游戏
2019/11/25 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
vue判断按钮是否可以点击
2022/04/09 Vue.js