Miller_Rabinプライムテストアルゴリズム

 HDUどのように多くの素数

ただそこにあるどのように多くの素数を見つけるために、あなたの正の整数の多くを与えます。

 

 

ではない、実際に必要かつ十分な条件は、この素数に応じてテストすることができるもののフェルマーの小定理の要件によるとPは、素数であります

ことに注意してくださいPの倍数にすることはできません

 

コード:

//
の#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#defineっ長い長い 
 長い N。 
長い 長い [ 6 ] = { 02761 }。
LLのMUL(-1,11,11-のB、LL c)は
{ 
    LL ANS = 0 一方、(b)は、
    { 
        もし、(B&1)ANS =(ANS + A)%のC、=(A + A)%のC、
        B >> = 1 
    } 
    戻り ANS%C; 
} 
長い 長い KSM(長い 長い長い 長い B、長い 長いC)
{ 
    長い 長い ANS = 1 一方、(b)は、
    { 
        もし、(B&1)ANS = MUL(ANS、C)。= MUL(、C)。
        B >> = 1 
    } 
    戻りANS。
} 
int型のmain()
{ 
    // freopenは( "data.txtを"、 "R"、STDIN)。
    // freopenは( "myp.out"、 "W"、STDOUT)。
    長い 長い X = 0、ANS = 0 一方、(〜のscanf(" %のLLD "、&N))
    { 
        ANS = 0 以下のためにint型 i = 1 ; iが++; iが<= N 
    { 
        scanf関数(" %のLLD "、およびX)を、 
        長い 長い FLA = 0 ;
        INT J = 1 ; J <= 3 ; J ++ 
        { 
            もし、(([J]%X =!0)&& KSM([j]は、X- 1、X)=!1 
            { 
                FLA = 1 破ります; 
            } 
        } 
        もし(FLAの== 0 
        { 
        ANS ++ // coutの<< X <<」「; 
        } 
        
    } 
    のprintf(" %LLDを\ n " 、ANS)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/OIEREDSION/p/11330791.html