使用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写asp详细讲解
Dec 16 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
启动Atom并运行python文件的步骤
Nov 09 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
python基础入门之普通操作与函数(三)
Jun 13 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 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/08/11 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
smarty内置函数section的用法
2015/01/22 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
基于python使用tibco ems代码实例
2019/12/20 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
python脚本第一行如何写
2020/08/30 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
2014春晚主持词
2014/03/25 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
岗位安全生产责任书
2014/07/28 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
学困生转化工作总结
2015/08/13 职场文书