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中的rjust()方法使用详解
May 19 Python
Python AES加密模块用法分析
May 22 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
python判断是空的实例分享
Jul 06 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
python 使用openpyxl读取excel数据
Feb 18 Python
浅谈Python numpy创建空数组的问题
May 25 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动态规划解决0-1背包问题实例分析
2015/03/23 PHP
ThinkPHP使用Smarty第三方插件方法小结
2016/03/19 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP查询分页的实现代码
2017/06/09 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
关于python写入文件自动换行的问题
2018/06/23 Python
python实现狄克斯特拉算法
2019/01/17 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
小学生获奖感言范文
2014/02/02 职场文书
惊天动地观后感
2015/06/10 职场文书
花木兰观后感
2015/06/10 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书