使用Python判断质数(素数)的简单方法讲解


Posted in Python onMay 05, 2016

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数。质数是与合数相对立的两个概念,二者构成了数论当中最基础的定义之一。基于质数定义的基础之上而建立的问题有很多世界级的难题,如哥德巴赫猜想等。算术基本定理证明每个大于1的正整数都可以写成素数的乘积,并且这种乘积的形式是唯一的。这个定理的重要一点是,将1排斥在素数集合以外。如果1被认为是素数,那么这些严格的阐述就不得不加上一些限制条件。 前几天偶尔的有朋友问python怎么判断素数的方法,走网上查了查,总结了python脚本判断一个数是否为素数的几种方法:

1.运用python的数学函数 

import math 

def isPrime(n): 
  if n <= 1: 
  return False 
  for i in range(2, int(math.sqrt(n)) + 1): 
  if n % i == 0: 
    return False 
  return True

2.单行程序扫描素数 

from math import sqrt 
N = 100 
[ p for p in  range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]

运用python的itertools模块 

from itertools import count 
def isPrime(n): 3water.com
  if n <= 1: 
    return False 
  for i in count(2): 
    if i * i > n: 
      return True 
    if n % i == 0: 
      return False

3.不使用模块的两种方法 
方法1:

def isPrime(n): 
  if n <= 1: 
    return False 
  i = 2 
  while i*i <= n: 
    if n % i == 0: 
      return False 
    i += 1 
  return True

方法2:

def isPrime(n): 
  if n <= 1: 
    return False 
  if n == 2: 
    return True 
  if n % 2 == 0: 
    return False 
  i = 3 
  while i * i <= n: 
    if n % i == 0: 
      return False 
    i += 2 
  return True

   
eg:求出20001到40001之间的质数(素数)
既然只能被1或者自己整出,那说明只有2次余数为0的时候,代码如下:

#!/usr/bin/python

L1=[]
for x in xrange(20001,40001):
 n = 0
 for y in xrange(1,x+1):
 if x % y == 0:
  n = n + 1
 if n == 2 :
 print x
 L1.append(x)
print L1

结果如下:

20011
20021
20023
20029
20047
20051
20063
20071
20089
20101
20107
20113
20117
20123
20129
20143
20147
20149
20161
20173
….
Python 相关文章推荐
Linux下编译安装MySQL-Python教程
Feb 02 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
python实现稀疏矩阵示例代码
Jun 09 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Python元组常见操作示例
Feb 19 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
Python任务调度利器之APScheduler详解
Apr 02 Python
python实现126邮箱发送邮件
May 20 Python
如何用python写个模板引擎
Jan 14 Python
Python编程中归并排序算法的实现步骤详解
May 04 #Python
Python手机号码归属地查询代码
May 04 #Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 #Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 #Python
Python中使用插入排序算法的简单分析与代码示例
May 04 #Python
Python中函数参数设置及使用的学习笔记
May 03 #Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 #Python
You might like
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
JS跨域总结
2012/08/30 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
HTML5文档结构标签
2017/04/21 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
生产经理的自我评价分享
2013/11/07 职场文书
高三霸气励志标语
2014/06/24 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
公司员工安全协议书
2014/11/21 职场文书
婚宴新郎致辞
2015/07/28 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书