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实现多线程的方式及多条命令并发执行
Jun 07 Python
Python selenium 三种等待方式解读
Sep 15 Python
python append、extend与insert的区别
Oct 13 Python
创建pycharm的自定义python模板方法
May 23 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
Laravel+Dingo/Api 自定义响应的实现
Feb 17 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
python redis连接 有序集合去重的代码
Aug 04 Python
使用python模拟高斯分布例子
Dec 09 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
Django集成MongoDB实现过程解析
Dec 01 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的基本常识小结
2013/07/05 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
slice函数的用法 之不错的应用
2006/12/29 Javascript
网上抓的一个特效
2007/05/11 Javascript
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
document.write的几点使用心得
2014/05/14 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
用Python实现KNN分类算法
2017/12/22 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
校三好学生主要事迹
2014/01/11 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
就业意向书范本
2015/05/11 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
导游词之丽江普济寺
2019/10/22 职场文书