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中声明只包含一个元素的元组数据方法
Aug 25 Python
教大家使用Python SqlAlchemy
Feb 12 Python
python入门前的第一课 python怎样入门
Mar 06 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
Python descriptor(描述符)的实现
Nov 15 Python
Django前后端分离csrf token获取方式
Dec 25 Python
Python经典五人分鱼实例讲解
Jan 04 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
Django操作cookie的实现
May 26 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概述.
2006/10/09 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
PDO::setAttribute讲解
2019/01/29 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
wxPython学习之主框架实例
2014/09/28 Python
itchat接口使用示例
2017/10/23 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python 元类实例解析
2018/04/04 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
表彰大会主持词
2014/03/26 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
教师外出学习心得体会
2016/01/18 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis