使用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求算数平方根和约数的方法汇总
Mar 09 Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
python批量复制图片到另一个文件夹
Sep 17 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python中二分查找法的实现方法
Dec 06 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 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 curl基本操作详解
2013/07/23 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
python中list列表的高级函数
2016/05/17 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
Python断言assert的用法代码解析
2018/02/03 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
opencv实现简单人脸识别
2021/02/19 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
详解如何修改python中字典的键和值
2020/09/29 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
好的自荐信包括什么内容
2013/11/07 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
家电业务员岗位职责
2014/03/10 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
住房租房协议书
2014/08/20 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
基于Redis位图实现用户签到功能
2021/05/08 Redis
nginx 配置指令之location使用详解
2022/05/25 Servers