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利用不到一百行代码实现一个小siri
Mar 02 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
Python中 map()函数的用法详解
Jul 10 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
深度辨析Python的eval()与exec()的方法
Mar 26 Python
python中的数据结构比较
May 13 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
Python中断多重循环的思路总结
Oct 04 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
js随机生成一个验证码
2017/06/01 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
js实现弹窗效果
2020/08/09 Javascript
Python解析xml中dom元素的方法
2015/03/12 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
电子商务应届生求职信
2013/11/16 职场文书
员工薪酬福利制度
2014/01/17 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
绩效考核实施方案
2014/03/18 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
敬老院标语
2014/06/27 职场文书
励志演讲稿300字
2014/08/21 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
期中考试后的感想
2015/08/07 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang