1. 程式人生 > >使用Python判斷質數(素數)的簡單方法講解

使用Python判斷質數(素數)的簡單方法講解

質數又稱素數。指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。素數在數論中有著很重要的地位。比1大但不是素數的數稱為合數。1和0既非素數也非合數。質數是與合數相對立的兩個概念,二者構成了數論當中最基礎的定義之一。基於質數定義的基礎之上而建立的問題有很多世界級的難題,如哥德巴赫猜想等。算術基本定理證明每個大於1的正整數都可以寫成素數的乘積,並且這種乘積的形式是唯一的。這個定理的重要一點是,將1排斥在素數集合以外。如果1被認為是素數,那麼這些嚴格的闡述就不得不加上一些限制條件。

前幾天偶爾的有朋友問python怎麼判斷素數的方法,在網上查了查,總結了python指令碼判斷一個數是否為素數的幾種方法:
 

  1. #運用python的數學函式    
  2. import math    
  3. def isPrime(n):    
  4.     if n <= 1:    
  5.     return False   
  6.     for i in range(2, int(math.sqrt(n)) + 1):    
  7.     if n % i == 0:    
  8.         return False   
  9.     return True   
  10. #單行程式掃描素數    
  11. from math import sqrt    
  12. N = 100
  13. [ p for p in   range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]    
  14. #運用python的itertools模組    
  15. from itertools import count    
  16. def isPrime(n):    
  17.     if n <= 1:    
  18.         return False   
  19.     for i in count(2):    
  20.         if i * i > n:    
  21.             return True   
  22.         if n % i == 0:    
  23.             return False   
  24. #不使用模組的兩種方法    
  25. def isPrime(n):    
  26.     if n <= 1:    
  27.         return False   
  28. i = 2
  29.     while i*i <= n:    
  30.         if n % i == 0:    
  31.             return False   
  32.         i += 1   
  33.     return True   
  34. def isPrime(n):    
  35.     if n <= 1:    
  36.         return False   
  37.     if n == 2:    
  38.         return True   
  39.     if n % 2 == 0:    
  40.         return False   
  41. i = 3
  42.     while i * i <= n:    
  43.         if n % i == 0:    
  44.             return False   
  45.         i += 2   
  46.     return True 

質數又稱素數。指在一個大於1的自然數中,除了1和此整數自身外,不能被其他自然數整除的數。素數在數論中有著很重要的地位。比1大但不是素數的數稱為合數。1和0既非素數也非合數。質數是與合數相對立的兩個概念,二者構成了數論當中最基礎的定義之一。基於質數定義的基礎之上而建立的問題有很多世界級的難題,如哥德巴赫猜想等。算術基本定理證明每個大於1的正整數都可以寫成素數的乘積,並且這種乘積的形式是唯一的。這個定理的重要一點是,將1排斥在素數集合以外。如果1被認為是素數,那麼這些嚴格的闡述就不得不加上一些限制條件。

前幾天偶爾的有朋友問python怎麼判斷素數的方法,在網上查了查,總結了python指令碼判斷一個數是否為素數的幾種方法:
 

  1. #運用python的數學函式    
  2. import math    
  3. def isPrime(n):    
  4.     if n <= 1:    
  5.     return False   
  6.     for i in range(2, int(math.sqrt(n)) + 1):    
  7.     if n % i == 0:    
  8.         return False   
  9.     return True   
  10. #單行程式掃描素數    
  11. from math import sqrt    
  12. N = 100
  13. [ p for p in   range(2, N) if 0 not in [ p% d for d in range(2, int(sqrt(p))+1)] ]    
  14. #運用python的itertools模組    
  15. from itertools import count    
  16. def isPrime(n):    
  17.     if n <= 1:    
  18.         return False   
  19.     for i in count(2):    
  20.         if i * i > n:    
  21.             return True   
  22.         if n % i == 0:    
  23.             return False   
  24. #不使用模組的兩種方法    
  25. def isPrime(n):    
  26.     if n <= 1:    
  27.         return False   
  28. i = 2
  29.     while i*i <= n:    
  30.         if n % i == 0:    
  31.             return False   
  32.         i += 1   
  33.     return True   
  34. def isPrime(n):    
  35.     if n <= 1:    
  36.         return False   
  37.     if n == 2:    
  38.         return True   
  39.     if n % 2 == 0:    
  40.         return False   
  41. i = 3
  42.     while i * i <= n:    
  43.         if n % i == 0:    
  44.             return False   
  45.         i += 2   
  46.     return True