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多线程编程中的join函数使用心得
Sep 02 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Python requests获取网页常用方法解析
Feb 20 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
python 链接sqlserver 写接口实例
Mar 11 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
10个示例带你掌握python中的元组
Nov 23 Python
用Python创建简易网站图文教程
Jun 11 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 中文处理技巧
2010/04/25 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python CSV模块使用实例
2015/04/09 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
python中kmeans聚类实现代码
2018/02/23 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
如何在Django项目中引入静态文件
2019/07/26 Python
Python如何使用函数做字典的值
2019/11/30 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
酒店办公室文员岗位职责
2013/12/18 职场文书
文秘大学生求职信
2014/02/25 职场文书
《满井游记》教学反思
2014/02/26 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
毕业生个人自荐书
2015/03/05 职场文书
应急管理工作总结2015
2015/05/04 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL