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 29 Python
解决uWSGI的编码问题详解
Mar 24 Python
Django model反向关联名称的方法
Dec 15 Python
python实现石头剪刀布程序
Jan 20 Python
pandas 层次化索引的实现方法
Jul 06 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
使用pygame写一个古诗词填空通关游戏
Dec 03 Python
Python更新所有已安装包的操作
Feb 13 Python
Python logging模块原理解析及应用
Aug 13 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 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实现粘贴截图并完成上传功能
2015/05/17 PHP
Zend Framework教程之Bootstrap类用法概述
2016/03/14 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
python 循环while和for in简单实例
2016/08/16 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
学校办公室主任职责
2013/12/27 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
创业培训计划书
2014/05/03 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
超强台风观后感
2015/06/09 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python