zoukankan      html  css  js  c++  java
  • Miller-Rabin素数检验算法

     1 import random
     2 def IsPrime_(n):
     3     while True:
     4         a = random.randint(2,n-1)
     5         if a%2==1:
     6             break
     7     m = n-1
     8     q = 0
     9     while m%2==0:
    10         m //= 2
    11         q += 1
    12     x_p = pow(a,m,n)
    13     for i in range(q):
    14         x_n = pow(x_p,2,n)
    15         if x_n==1 and x_p!=1 and x_p!=n-1:
    16             return False
    17         x_p = x_n
    18     if x_n!=1:
    19         return False
    20     return True
    21 def IsPrime(x):
    22     if x<=1:
    23         return False
    24     if x==2 or x==3:
    25         return True
    26     if x%2==0:
    27         return False
    28     for i in range(10):
    29         if not IsPrime_(x):
    30             return False
    31     return True
    32 for i in range(1000):
    33     if IsPrime(i+1):
    34         print(i+1,end='	')

    输出:

    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    [Finished in 0.3s]

  • 相关阅读:
    HihoCoder#1052:基因工程
    HihoCoder第十周:后序遍历
    HihoCoder第九周 状态压缩 二 与POJ2411总结
    [百度之星]资格赛:IP聚合
    HihoCoder第八周:状态压缩 一
    HihoCoder#1051:补提交卡
    HihoCoder#1039:字符消除
    HihoCoder第七周:完全背包问题
    HihoCoder第六周:01背包问题
    杭电2502--月之数
  • 原文地址:https://www.cnblogs.com/digdig/p/12592543.html
Copyright © 2011-2022 走看看