python判断素数的函数_使⽤Python判断质数(素数)的简单
⽅法讲解c++判断素数
质数⼜称素数。指在⼀个⼤于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): www.jb51
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
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
20023 20029 20047 20051 20063 20071 20089 20101 20107 20113 20117 20123 20129 20143 20147 20149 20161 20173….
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论