(間違った歓迎ギャング論文)
基本定理:
ウィルソンの定理:pは必要十分条件の素数であるP |(P-1)+ 1!
フェルマーの小定理:について素数 p及び整数、もし。(P)= 1、A ^(P-1)= 1(MOD P)
オイラーの定理のための:任意の二つの互いに素な整数A、M 、A 。^ [ピー](M)= 1(MODのM) 、 Φは、オイラー関数であり、pは素数pの数よりも少ない数を表します。
オイラー関数を解きます:
1 INTオイラー(INT X) 2 { 3つの int型 RES = xであり、n = X。 4 のために(int型 I = 2 ; iは<N = *; iは++ ) 5 た場合(N%iは== 0 ) 6 { 7 のRES =のRES / Iが*(I - 1 )。 8 一方、(N%のI == 0 ) 9 N / A = I。 10 } 11 であれば(nは> 1 ) 12 RES = RES / N×(N - 1 )。 13の リターンRES。 14 }
1 空隙getEuler() 2 { 3 のために(int型 i = 1 ; iは<MAXN; iは++ ) 4 E [I] = I。 図5は、 のために(int型 I = 2、I <MAXN; iが++ ) 6 場合(E [I] == I) 7 のための(int型 ; J <MAXN J + = J = I) 8 E [J] = E [ J] / i *が(I - 1 ); 9 }
拡張オイラーの定理:オイラーの定理に拡張アプリケーション!(A、M)= 1の場合は、それが大きなべき乗のために使用することができます
<コード>
剰余定理(中国剰余定理):
フォームの式のm個の互いに素
だからMは=メートル。1 * M 2 ..mのN-、M I = M / M I、T I = M I MモードではI乗法逆元の感覚(に参照することができ逆数フェルマーの小定理または拡張ヨーロッパリードいくつかのアルゴリズム)、ソリューションです
=のX 1 * T 1 * M 1 + 2 * T 2 *のM 2 +··· N- * T N- * MのN- + KM、 Kは整数であり、元の方程式の最小液Xのmod M
mが互いに素ではない場合のために、我々は解決するために組み合わされ、拡張ユークリッドペアワイズを使用する必要がある(埋め込みピット)
<コード>
素数与合数:
固有の因子分解定理:自然数X一意に分解することができ、X = P 1 R&LT 。1 P 2 R&LT 2 ... P N- R&LT N- (Pは素数であり、rは正の整数)
Xは、すべての要素の数である:(R&LT + 1 。1)*(R&LT 1 + 2 (1 + R&LT)... N- )
すべての要因とxの和:( Pの+。1 。1 + P 1 2 Pの+ 。1。3 ... P 1 R1)(1 + P 2 + P 2 2 + ... + P 2 R&LT 2)...( P + 1 N - + P N- 2 + ... + P N- R&LT N-)
Xすべての素数の要因の和:PHI(N)* N / 2、(PHI オイラー関数の、その数をn個とnおよび素数未満を表します。)
エマープは:全て0 <iはXを<ため、(xは<G G(I)が存在する場合はG(X)の定義は、xの数の要因である ) のXエマープ呼ばれ
エマープの自然1 :素因数2エマープから始まる連続した素数でなければなりません
トランス-2- PROPERTIES :nがエマープ、= Nの場合 P 1 R&LT 。1 P 2 R&LT 2 ... P N R&LT N 、R1> R2 => = .. RN
!Nの因数分解:
その力が得られ、バック計算することができます。
<コード>
エリクセンプライムふるい(NOコード)
1 のための(int型 I = 2 ; I <= MAXN; iが++ ) 2 { 3 た場合(!VIS [i])と 4 プライム[PCNT ++] = I。 5 のための(int型 J = 0 ; jは<PCNT && iが素数[j]を* <= MAXN; J ++ ) 6 { 7 VIS [i *が素数[J] = 1 。 8 もし(I%プライム[j] == 0 ) 9 ブレーク。 10 } 11 }
MILLER-ロビンプライムアッセイ
フェルマーの小定理:Aとの任意の整数の素数pと、もし(P)= 1の場合、P 1- ≡1(MODのP)。代わりに、A満たすためにP-を。1 ≡1(MOD P)、Pはほぼ確実プライムなります。
擬似素数:nは正の整数であり、nは満たす正の整数がある場合は互いに素であれば、nが1 - 。≡1(MOD n)で、我々は、nはダミーに基づいて素数であると言います。数が擬似素数であれば、それはほぼ確実に素数です。
ミラーラビンテスト:これ以上N-1以下、Bイル(Sサブ)を選択していき、そこBか否かをその都度算出されるN-1 ≡1(MOD n)を素数を、nはそうでなければ係合されるたびに設定されています番号。
<コード>
ポラード・ローのファクタリング
-ギャングブログからhttps://blog.csdn.net/Sunshine_cfbsl/article/details/52512706
大きな整数nに対して、我々は、xがnの素因数の確率が小さいとされるようなxのうちのいずれかを取りますが、2個の数x1とx2はそれらの差を取ることはX1を取った場合のn-要因の確率は、増加されるだろうようなものである場合そしてX2ようGCD(ABS(X1-X2)、N)> 1つの、さらに高い確率。これは、ポラードのRho-アルゴリズムの主なアイデアです。
GCD満たす(ABS(X1-X2)を、N)> 1つのX1及びX2、GCD(ABS(X1-X2)、N)は、Nの因数である、それが素数であるかどうかを決定するだけでよい、素数であれば、次いでnが素因数、そうでなければこの再帰的プロセスです。
それはプライムMillerMiller-RabinRabinアルゴリズムを用いて決定されています。
では、どのようx1x1とx2x2それを作り続けるのですか?
X 2 Xによって[I] =(X [に対し、区間[1、N]でランダムX1うち、 I-1] * X [I-1]%N + C)%N cは任意の与えられており、外挿し値は、それが判明し、これはむしろ望ましいです。
<コード>
メビウス反転
(墓地)
原始根
(墓地)