質數又稱素數。指在乙個大於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.net
if n <= 1:
return false
for i in coun程式設計客棧t(2):
if i * i > n:
return true
if n % i == 0:
return false
3.不使用模組的兩種方法
方法1:
def isprime(n):
if n <= 1:
rewww.cppcns.comturn 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判斷質數(素數)的簡單方法講解
本文位址: /jiaoben/python/149377.html
python基礎練習 判斷質數(素數)
給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10,程式應該輸出結果為2。共有兩對質數的和為10,分別為 5,5 3,7 質數 0 怎麼判斷質數?定義乙個函式判斷是否是質數 1 求出整數範圍內的質數 存到列表 2 遍歷所有的質數,求出和等...
mysql 判斷質數 質數(素數)判斷演算法總結
1.原始演算法 就是將質數的定義翻譯成 就要看i是否能被小於它的sqrt i 的數整除。時間複雜度o n sqrt n 空間複雜度o m m為質數個數。2.質數篩法 定義bool is prime n 1 初始化為1 奇數為1,偶數為0 已經2為最小的質數,將2的倍數的布林值都設為false,如此類...
Python 判斷是否為質數或素數
乙個大於1的自然數,除了1和它本身外,不能被其他自然數 質數 整除 2,3,5,7等 換句話說就是該數除了1和它本身以外不再有其他的因數。首先我們來第乙個傳統的判斷思路 def handlernum num 質數大於 1 if num 1 檢視是否有其他因子 for i in range 2,num...