欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年05月05日 17:26:29   作者:larry  
這篇文章主要介紹了使用Python判斷質(zhì)數(shù)(素數(shù))的簡單方法講解,經(jīng)常被用來做科學計算的Python處理這種小問題當然手到擒來^_-需要的朋友可以參考下

質(zhì)數(shù)又稱素數(shù)。指在一個大于1的自然數(shù)中,除了1和此整數(shù)自身外,不能被其他自然數(shù)整除的數(shù)。素數(shù)在數(shù)論中有著很重要的地位。比1大但不是素數(shù)的數(shù)稱為合數(shù)。1和0既非素數(shù)也非合數(shù)。質(zhì)數(shù)是與合數(shù)相對立的兩個概念,二者構(gòu)成了數(shù)論當中最基礎(chǔ)的定義之一。基于質(zhì)數(shù)定義的基礎(chǔ)之上而建立的問題有很多世界級的難題,如哥德巴赫猜想等。算術(shù)基本定理證明每個大于1的正整數(shù)都可以寫成素數(shù)的乘積,并且這種乘積的形式是唯一的。這個定理的重要一點是,將1排斥在素數(shù)集合以外。如果1被認為是素數(shù),那么這些嚴格的闡述就不得不加上一些限制條件。 前幾天偶爾的有朋友問python怎么判斷素數(shù)的方法,走網(wǎng)上查了查,總結(jié)了python腳本判斷一個數(shù)是否為素數(shù)的幾種方法:

1.運用python的數(shù)學函數(shù) 

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.單行程序掃描素數(shù) 

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.dbjr.com.cn
  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之間的質(zhì)數(shù)(素數(shù))
既然只能被1或者自己整出,那說明只有2次余數(shù)為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

結(jié)果如下:

20011
20021
20023
20029
20047
20051
20063
20071
20089
20101
20107
20113
20117
20123
20129
20143
20147
20149
20161
20173
….

相關(guān)文章

最新評論