使用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开发环境搭建
Dec 16 Python
python实现图片处理和特征提取详解
Nov 13 Python
Python实现的多进程和多线程功能示例
May 29 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
PyQt5重写QComboBox的鼠标点击事件方法
Jun 25 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 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 JSON中文乱码的解决方法详解
2013/06/06 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
node.js中watch机制详解
2014/11/17 Javascript
jQuery中contents()方法用法实例
2015/01/08 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
详解webpack模块化管理和打包工具
2018/04/21 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python3读取文件常用方法实例分析
2015/05/22 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
对python字典过滤条件的实例详解
2019/01/22 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
Python爬虫开发与项目实战
2020/12/16 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
社区党务公开实施方案
2014/03/18 职场文书
广告词串烧
2014/03/19 职场文书
房产转让协议书
2014/04/11 职场文书
应届毕业生自荐书
2014/06/18 职场文书
三方股份合作协议书
2014/10/13 职场文书
房地产项目合作意向书
2015/05/08 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang