使用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中dictionary items()系列函数的用法实例
Aug 21 Python
python利用beautifulSoup实现爬虫
Sep 29 Python
Python字符串替换实例分析
May 11 Python
python抓取网页中图片并保存到本地
Dec 01 Python
python将ansible配置转为json格式实例代码
May 15 Python
Python设计模式之命令模式简单示例
Jan 10 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
django从请求到响应的过程深入讲解
Aug 01 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
Django中提供的6种缓存方式详解
Aug 05 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 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上的memcache和memcached两个pecl库
2010/03/29 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
jquery插件制作简单示例说明
2012/02/03 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
利用Python在一个文件的头部插入数据的实例
2018/05/02 Python
python实现抖音点赞功能
2019/04/07 Python
python解析yaml文件过程详解
2019/08/30 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
小学生勤俭节约演讲稿
2014/08/28 职场文书
出生公证书
2015/01/23 职场文书
实习介绍信范文
2015/05/05 职场文书
反邪教观后感
2015/06/11 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python