使用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 21 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
浅谈python迭代器
Nov 08 Python
Python实现PS滤镜Fish lens图像扭曲效果示例
Jan 29 Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
django用户登录验证的完整示例代码
Jul 21 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
python多进程重复加载的解决方式
Dec 13 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
小结Python的反射机制
Sep 28 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 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数组的一些常见操作汇总
2011/07/17 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
json 定义
2008/06/10 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
javascript实现简易计算器
2017/02/01 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
微信小程序数据存储与取值详解
2018/01/30 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
Python实现汇率转换操作
2020/05/03 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
法学毕业生自我鉴定
2013/11/08 职场文书
优秀求职信范文分享
2013/12/19 职场文书
初中团委工作总结
2015/08/13 职场文书
2015年教师节广播稿
2015/08/19 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android