単純な数論(5)------ミラーラビン素数

内側そう素数5に、単純な数論を直接(4)までのガウス消去した後、決定され、簡単な数論5ガウスの消去法を書きますがアウトグーためにもともと用意

 単純な数論(5)------ミラーラビン素数

 PartI 素数判定

あなたは今、数Nを与えた場合、どのようにあなたは彼が素数であるかどうかを判断しない、あなたが特定の複合番号にすることができた場合、我々は直接、か割り切れるNの1-SQRTの数(N)を列挙することができます明確です

しかし、この時の複雑さは非常に良いです

その後、我々はミラーラビンのアルゴリズムを使用する必要があります

 パートII事前知識---フェルマーの小定理と二次プロービング

(1):フェルマーの小定理:Pは素数であり、そして場合(A、P)= 1、P-1 ≡1(P MOD)

  (2)二次検出は:素数Pについては、満たすことができるX 2 ≡1(P MOD)合同クラスX のみx≡1(MOD P)とx≡p-1(MOD P)

PartIIIアルゴリズム・プロセス(Nの場合)

(1)であっても選別

(2):最大値を見つけるように2 S 、S * = N-T 1。

(3):ランダムに選択された素数、我々は最初に計算  ^ Tし、次に(実行二次検出の二乗に引き続き  S 2回)。

 

#include <ビット/ STDC ++ H> 使用して名前空間STDを、
インラインint型リード()
{ int型、F = 1、X = 0 char型のCH;
    実行
    { 
        CH = GETCHAR()。
        もし(CH == ' - ')、F = - 1 
    } 一方、(CH < ' 0 ' || CH> ' 9 ' )。
    実行
    { 
        X =(x << 3)+(X << 1)+ CH- '

 

    0 " ; 
        CH = GETCHAR()。
    } 一方、(CH> = ' 0 ' && CH <= ' 9 ' )。
    リターンのF *のX; 
} 

のtypedef 長い LL。

LLのn; 
LLのP [ 12 ] = { 23571113171923293137 }。

インラインLL捕虜(-1,11,11-のB、LL c)は
{ 
    LL ANS = 1、MUL = A。
    一方、(b)は、
    { 
        もし、(B&1 
        { 
            ANS * = MUL。
            ANS%= C。    
        } 
        MUL * = MUL。
        MUL%= C。
        B >> = 1 
    } 
    戻り ANS%のCと、
} 

インラインBOOL Miller_Rabin(LLのX)
{ 
    場合(Xの== 1 ){
        返す ; 
    } 
    場合(Xの== 2を返す もし(xは%2 == 0を返す BOOL F = 1 以下のために(LL i = 0 ; iは< 12 ; iは++ 
    { 
        場合(P [I] == x)を返す 
        LL T = X- 1、S = 0 一方、(T%2 == 0 ){ 
            T / =2 ; 
            S ++ ; 
        } 
        LL CUR = パウ(P [i]は、T、X)。
        もし(CURの== 1続けます(LLのJ = 1 ; J <= Sであり、j ++ 
        { 
            LL NXT = CUR * CUR%X。
            もし(NXTの== 1 && CUR =!1 && CUR = X-!1 
            { 
                F = 0 破ります; 
            } 
            CUR =NXT;
            もし(CURの== 1ブレーク
        } 
        もし(!CUR = 1)F = 0 もし(F!)破ります
    } 
    戻りF。
    
} 

int型のmain()
{ 
    N = )(読み取ります。
    もし(Miller_Rabin(N))
    { 
        COUTは << " 素数" << ENDL。
    } 
    他の裁判所未満<< " 素数でない" << てendl; 
}

 

おすすめ

転載: www.cnblogs.com/wlzs1432/p/11266625.html