獲取質(zhì)數(shù)的三種方法(python 實(shí)現(xiàn))

一.普通判斷 (直接判斷是否是質(zhì)數(shù))

對(duì)于數(shù)值較小的數(shù)適合,對(duì)于上千位的數(shù)判斷可能要花較長(zhǎng)的時(shí)間

#普通判斷 質(zhì)數(shù)
def isPrime(num):

    if num<2:
        return False

    for i in range(2,int(math.sqrt(num)+1)):
        if num%2 == 0:
            return False

    return True

二.埃拉托色尼篩子(生成范圍內(nèi)的質(zhì)數(shù)) 介紹

該方法可以獲取范圍內(nèi)的質(zhì)數(shù).獲取較大范圍內(nèi)的質(zhì)數(shù)花費(fèi)時(shí)間較長(zhǎng)

def primeSieve(sieveSize):

    sieve = [True] * sieveSize
    # 0 和 1 都不是質(zhì)數(shù)
    sieve[0] = False
    sieve[1] = False

    for i in  range(2, int(math.sqrt(sieveSize)+1)):
        point = i * 2
        while point<sieveSize:
            sieve[point] = False
            point += 1

    primes = []

    for i in  range(sieveSize):
        if sieve[i] == True:
            primes.append(sieve[i])

    return primes

三.拉賓米勒 判斷法介紹

def rabinMiller(num):

    s = num - 1
    t = 0

    while s%2 == 0:
        s  = s//2
        #用來(lái)判斷除了多少次
        t += 1
    for trials in  range(5):
        a = random.randrange(2,num-1)
        v = pow(a,s,num)
        if v != 1:

            i = 0

            while v != (num - 1):
                if i == t- 1:
                    return False
                else:
                    i = i+1
                    v = (v**2)%num
    return True
#改進(jìn)后判斷質(zhì)數(shù)的方法
def isPrime(num):
     # Return True if num is a prime number. This function does a quicker
    # prime number check before calling rabinMiller().

     if (num < 2):
         return False

     lowPrimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101,
                  103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
                  211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
                  331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443,
                  449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577,
                  587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
                  709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839,
                  853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983,
                  991, 997]

     if num in lowPrimes:
         return True

     for prime in lowPrimes:
         if num % prime == 0:
             return False

     return rabinMiller(num)

def generateLargePrime(keysize=1024):
     # Return a random prime number of keysize bits in size.
     while True:
         num = random.randrange(2**(keysize-1), 2**(keysize))
         if isPrime(num):
             return num

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澳骤,一起剝皮案震驚了整個(gè)濱河市既鞠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洞斯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姻氨,死亡現(xiàn)場(chǎng)離奇詭異贫堰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)死陆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門招拙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人措译,你說(shuō)我怎么就攤上這事迫像。” “怎么了瞳遍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵闻妓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我掠械,道長(zhǎng)由缆,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任猾蒂,我火速辦了婚禮均唉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肚菠。我一直安慰自己舔箭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著层扶,像睡著了一般箫章。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上镜会,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天檬寂,我揣著相機(jī)與錄音,去河邊找鬼戳表。 笑死桶至,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匾旭。 我是一名探鬼主播镣屹,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼价涝!你這毒婦竟也來(lái)了野瘦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤飒泻,失蹤者是張志新(化名)和其女友劉穎鞭光,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體泞遗,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惰许,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了史辙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汹买。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖聊倔,靈堂內(nèi)的尸體忽然破棺而出晦毙,到底是詐尸還是另有隱情,我是刑警寧澤耙蔑,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布见妒,位于F島的核電站,受9級(jí)特大地震影響甸陌,放射性物質(zhì)發(fā)生泄漏须揣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一钱豁、第九天 我趴在偏房一處隱蔽的房頂上張望耻卡。 院中可真熱鬧,春花似錦牲尺、人聲如沸卵酪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)溃卡。三九已至溢豆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間塑煎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工臭蚁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留最铁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓垮兑,卻偏偏與公主長(zhǎng)得像冷尉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子系枪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 橙色雀哨、白色、橘色私爷、藍(lán)色 的格子 浮在夜的河流里 淺淺 相鄰 模糊 沉默 冬日河水的褶皺里偶爾磕碰 鏡子一樣遙遠(yuǎn) 眨...
    稻香草木中閱讀 77評(píng)論 0 0
  • 想起彥蕊這個(gè)月的主題是計(jì)劃2018年的計(jì)劃雾棺。再看看前天晚上我和小朋友一起設(shè)計(jì)的家庭公約。每一條都是源自己說(shuō)...
    云中看花閱讀 959評(píng)論 0 0
  • 我們知道ipv4協(xié)議提供的IP地址是有限的衬浑,為了解決IP地址不足的問(wèn)題捌浩,于是就有了網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT),它的思想...
    六尺帳篷閱讀 3,389評(píng)論 2 3
  • 新人產(chǎn)品分析——第一步 一工秩、分析前的準(zhǔn)備 1.確認(rèn)分析目標(biāo) 分析一塊產(chǎn)品的目的差不多可以歸為: 競(jìng)品分析:尋找這個(gè)...
    Lzer0閱讀 250評(píng)論 0 0