HDUどのように多くの素数
ただそこにあるどのように多くの素数を見つけるために、あなたの正の整数の多くを与えます。
ではない、実際に必要かつ十分な条件は、この素数に応じてテストすることができるもののフェルマーの小定理の要件によるとPは、素数であります
ことに注意してくださいPの倍数にすることはできません
コード:
// の#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineっ長い長い 長い 長N。 長い 長い [ 6 ] = { 0、2、7、61 }。 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)。 } }