使用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实现的堆排序算法原理与用法实例分析
Nov 22 Python
python实现电脑自动关机
Jun 20 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
pandas.DataFrame的pivot()和unstack()实现行转列
Jul 06 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
python线程join方法原理解析
Feb 11 Python
Python 随机按键模拟2小时
Dec 30 Python
django上传文件的三种方式
Apr 29 Python
利用Python多线程实现图片下载器
Mar 25 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
php 动态执行带有参数的类方法
2009/04/10 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
javascript的BOM
2016/05/03 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
python时间整形转标准格式的示例分享
2014/02/14 Python
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
python编写爬虫小程序
2015/05/14 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
Notino法国:购买香水和化妆品
2019/04/15 全球购物
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
培训自我鉴定
2014/01/31 职场文书
新年联欢会主持词
2014/03/27 职场文书
网络技术专业求职信
2014/05/02 职场文书
总经理人事任命书
2014/06/05 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
如何自己动手写SQL执行引擎
2021/06/02 MySQL