使用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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
详解Python迭代和迭代器
Mar 28 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
使用Python从有道词典网页获取单词翻译
Jul 03 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
pytorch中的 .view()函数的用法介绍
Mar 17 Python
Python中的socket网络模块介绍
Jul 23 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中的null合并运算符
2015/12/30 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
python中星号变量的几种特殊用法
2016/09/07 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
一个精品风格的世界:Atterley
2019/05/01 全球购物
高一新生军训感言
2014/03/02 职场文书
医药营销个人求职信
2014/04/12 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
先进党员事迹材料
2014/12/24 职场文书
学期个人工作总结
2015/02/13 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
五一晚会主持词
2015/07/01 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
基于tensorflow权重文件的解读
2021/05/26 Python