#番号理論学習の概要

A.テンプレートは&&拡大ヨーロッパ反転元のテンプレートに沿って削除されました

ブログ:https://blog.csdn.net/m0_37579232/article/details/81428065

https://blog.csdn.net/m0_37579232/article/details/89810566

INT GCD(int型のx、int型のY)
{
戻りY GCD(Y、Xの%のY):X;?
}


// exgcd反転元欧州で拡大します

= GCD(A、B)によって//カルク斧+(int型B、INT&X、INT&Y INT)のint exgcd。
{
(B == 0)なら
、{
X = 1、Y = 0。
返します。
}
INT G = exgcd(B、%のB、Y、X)。
Y- = A / B * X。
グラムを返します。
}


int型exgcd(int型B INT、INT&X、INT&Y)
{
(B == 0)場合
、{
X = 1、Y = 0。
返します。
}

{
int型G = exgcd(B、%のB、Y、X)。
Y- = A / B * X。
グラムを返します。
}
}

次の点に注意してください
。1.もし式K =変数の溶液によって必要な溶液の斧+、もしkは場合のみ| GCD(a、b)は可解場合
2. =によってk個のAX +ソリューションを見つける、最初によってAX +を見つけます。 = GCD(a、b)は溶液、
次いで、X0 = X * K / GCD( a、b)は、Y0 = Yの*のK / GCD(a、b)は、 所望の溶液
3.不定方程式を取得する方法最小の正の整数解?
X =((x *用のK / GCD(A、B))%(B / GCD(A、B))+(B / GCD(A、B)))%(B / GCD(b)参照)。

II。オイラー機能

https://baike.baidu.com/item/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0/1944850?fr=aladdin

https://blog.csdn.net/sentimental_dog/article/details/52002608

/オイラー関数
//方法:定義を直接次の
オイラー(N-INT)がINT
{
INT = N-RESは、n A =と、
のための(INT I = 2であり、Iは、I * <= A; Iは++)
{
IF(AをI == 0%)
RES =のRES / Iは、(* 1-I)。
一方、(== 0%I)
A / I =;
}
(A> 1)RES =のRES / A *(IF 1-A)。 ;
; RESを返す
}
計算オイラーオイラー関数+の完成しながらメッシュ://方法の二つは
NUMP、P [N]、ファイ[N]、int型のM [N]を;
//ストアi番目のmが素数でありますi番号ストレージのオイラーのファイ関数値[I]
// P [i]はi番目の素数、p個のメモリアレイサイズNUMPに格納された
空隙のCalc()
{
ファイ= 1 [1];
(iは= int型用。1; I <= N - 、Iは++)
{
IF(M [I])!
{
P [++ NUMP] = I;
ピー[I] = I-1;
}
そうでなければ
{
(INT J = 1; J <= && P NUMP [J] * I <= N; J ++)
{
M [P [I] Iは、*] = 1。
IF(I%P [j] == 0)
非=非[I] * P [j] [iがj]を[Pを*]。
他に
手数料=非[i]は*(P [J] -1)[Iは、p [J] *]を。
}
}

}
}

ふるい素数を求めてIII。

https://www.luogu.org/problemnew/solution/P3383

例:https://www.luogu.org/problem/P3383

#include <cstdioを>
する#include <CStringの>
に#define N 10000002
名前空間stdを使用。
N INT、M、PN、T。
BOOLプライム[N]。
INTプライム[N];
インラインボイドふるい()
{
memsetの(プライム、真、はsizeof(プライム))。
プライム[0] =プライム[1] =偽。
以下のために(INT I = 2; iが<= N; iは++)
{
IF(プライム[I])
{
プライム[PN ++] = I。
}
のための(int型J = 0; J <PN &&プライム[J] * I <= nであり、j ++)
{
プライム[プライム[J] * I] = FALSE;
もし(I%総理[J] == 0)
破ります。
}
}
を返します。
}
int型のmain()
{
scanf関数( "%D%dの"、&N、&M)。
ふるい();
(; I <= M I ++はiは1 = INT)のために
{
scanf関数(」
(プライム[T])の場合
のprintf( "はい\ N");

のprintf( "いいえ\ nを");
}
0を返します。
}

IV。乗法機能

https://baike.baidu.com/item/%E7%A7%AF%E6%80%A7%E5%87%BD%E6%95%B0/8354949?fr=aladdin

V.フェルマーの小定理

素数pの整数、もしP-1フィルムPの(B)= 1、次に電源I 1。

補題1。
  、Bの場合、cは3の整数であり、mは正の整数であり、(M、C)= 1であり、次いで、場合・c≡b・C(MOD M )、 (MOD M)がa≡b。
  ・c≡b・C(MOD:ことを証明 M) AC-bc≡0(MOD m)が得られることを得ることができる(AB)・c≡0(MOD M )。以降(M、C)= 1、すなわち、M、C互いに素、A-b≡0(MOD M)、ついて行くことができ、Cが得られるa≡b(MOD M)。  [2] 
補題2。
  提供mは 整数 であり、m> 1、bは 整数 と(M、B)= 1。[1]、[2場合 ]、[3]、[4]、... [m]は、次いで・[1]、B B、完全残留システムモジュロMである・[2] B・[3]、Bは、・[4]、...、B・[m]はモジュロMの完全残留システムを構成しています。
  証明:もし2件の整数B・[i]とB・[J]合同即ちB・[I]≡b・ [J](MOD m)が存在している..(I> = 1 && J > = 1)、補題1によれば、[I]≡a[j]を有する (MODメートル)。完全に残りの行 に定義は 、これは不可能であると理解ので、どの2つが存在しない 、整数 ・[i]とB・[J]合同Bは。
Bそう・[1]、B・[2]、B・[3]、B・フル構成モジュロM残りの行の[4]、...、B・[M]。
构造素数
 完了し 、残りの行を
なぜなら
 、補題2から利用可能
Pは完全にある 残りの行 完全な自然からの残りの行、
その
知っているが簡単
 、 合同 両側を約行くことができます
 与えるために、
これは、フェルマーの小定理を証明しました。  [3]

アプリケーション

編集します
計算
 残りは13で除算され
VI。ウィルソンの定理
初等数論 、ウィルソンの定理は自然数かどうかを判断できます 素数 必要十分条件 つまり: 場合にのみ !:( P -1)、pは素数であるとき≡-1(モッズP)が、理由は 階乗は、 実用的な意義のためにその結論ではない、爆発的な成長ですが、コンピュータの演算能力によって持っていますアプリケーションの広い範囲が、また、数学的な導出を支援することができます。

おすすめ

転載: www.cnblogs.com/little-cute-hjr/p/11620127.html