使用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进程类subprocess的一些操作方法例子
Nov 22 Python
Python过滤列表用法实例分析
Apr 29 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
python定时关机小脚本
Jun 20 Python
Django REST framework视图的用法
Jan 16 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
利用Python计算KS的实例详解
Mar 03 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
python 下载文件的多种方法汇总
Nov 17 Python
Python实现简单的俄罗斯方块游戏
Sep 25 Python
Python读取和写入Excel数据
Apr 20 Python
Django框架之路由用法
Jun 10 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性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
Python素数检测实例分析
2015/06/15 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
Python flask框架端口失效解决方案
2020/06/04 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
交通安全标语
2014/06/06 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
主持人开幕词
2015/01/29 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
教你用eclipse连接mysql数据库
2021/04/22 MySQL
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python