使用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 相关文章推荐
利用Python在一个文件的头部插入数据的实例
May 02 Python
Python判断两个list是否是父子集关系的实例
May 04 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
Python对象与引用的介绍
Jan 24 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
Python箱型图处理离群点的例子
Dec 09 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
Python如何使用OS模块调用cmd
Feb 27 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
python编程的核心知识点总结
Feb 08 Python
Python数据结构之队列详解
Mar 21 Python
使用Python解决图表与画布的间距问题
Apr 11 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的cms
2010/12/19 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
网络工程师的自我评价
2013/10/02 职场文书
教师实习自我鉴定
2013/12/14 职场文书
竞选班长演讲稿
2013/12/30 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
主持稿开场白
2015/06/01 职场文书
团委副书记工作总结
2015/08/14 职场文书
教师节主题班会方案
2015/08/17 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
初中化学教学反思
2016/02/22 职场文书
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript