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 22 Python
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
python学习必备知识汇总
Sep 08 Python
Python科学画图代码分享
Nov 29 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
Django的models中on_delete参数详解
Jul 16 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
Django开发RESTful API实现增删改查(入门级)
May 10 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
神族 Protoss 历史背景
2020/03/14 星际争霸
世界上第一台立体声收音机
2021/03/01 无线电
php email邮箱正则
2008/10/08 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
php文件缓存方法总结
2016/03/16 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
微信小程序实现日历小功能
2020/11/18 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
python实现自主查询实时天气
2018/06/22 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
工商企业管理应届生求职信
2013/11/03 职场文书
商务英语本科生的自我评价分享
2013/11/15 职场文书
保护母亲河倡议书
2014/04/14 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
狮子林导游词
2015/02/03 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL