合同:数論における重要な概念。正の整数mが与えられると、二つの整数A及びB満たす(AB)mで分割することができる、すなわち、(A-B)/ mは整数を取得する場合、
次に、整数a及びbは合同モジュロM、示さa≡b(MOD M)であると述べました。合同モジュロMは同値関係の整数です。
同じ残り、2回の整数合同している場合、2つの整数と数学的に合同は、整数で割りました。
二つの整数、それらが整数Mを分割することにより得られ、bは、Iに等しく、a及びbは合同モジュロMまたはBのモジュロMに一致するために呼び出されます
a≡b(MOD M)と称します
BのM、AとBと合同型として読み取る、又は合同モジュロMを読み込みます。
例えば26≡2(MOD 12)
(AB&)、AおよびBで示さa≡b(MOD M)、合同モジュロMと呼ばれる、とが読み出され| M提供される定義は、Mがあれば、bは、整数であり、1以上の正の整数大きいですB合同モジュロM。
明らかに、その事実があります
(1)もしa≡0(MOD M)、M |。
(2)a≡b(MOD m)はm個のBに相当する同一の残りによって除去されます。
[証明]
充足:M |(AB) - >a≡b(MODメートル)
= MQ1 + R1を設定し、B = MQ2 + R2
そして0≤r1、R2 <M
∵M |(AB)
およびAB = M(Q1-Q2)+(R1-R2)。
∴nが一定でなければならないので、(R1-R2)= MN
(R1-R2)| mがあります。
∵0≤r1、R2 <M、
∴0≤| R1-R2 | <M
∴r1-R2 = 0
すなわち、R1 = R2。
従ってa≡b(MOD M)。
必要性:a≡b(MODメートル) - > M |(AB)
B、設定、残りはm個のRにより除去し、
= MQ1 + R、B = MQ2 + Rを即。
∵ab= M(Q1-Q2)
∴m|(AB)。
自然の合同は、主に以下のいくつかでは、より多くなります。
同じ除数と、2つの数(又は差)が残り、及び(又は差)合同数の1。
同じ除数2.、2つの数の積と、彼らは合同の数の積以上です。
同じ除数3.合同な二つの整数が存在する場合、それらは確かにこの除数割り切れるとの違いになります。
二つの数の合同場合、同じ除数4.は、その後、彼らの力は同じではありません。
アプリケーションの合同:
例:13で割った余りを求めて2001 ^ 2003
合同プロパティ4によれば、我々は^2003≡12^ 2003 2001(13 MOD)(2001と同じ金型13以上12)ことを結論付けることができます
^ 2003年12はその後、我々は13が合同で1〜12平方型を用いて数回を見つけるだろう、13で割って見つけることは困難である、まだ多数あります。
試験は、(13 MOD)^2≡112を引き出すことができます
我々1001×12 ^1≡1×12≡12(MOD 13)^ 2003 ^ 12(12 ^ 2)に1001×12 ^ 1、及び(12 ^ 2)^を分割しました
この時点で、我々は13で割っ^ 2003 2001の残りは12で描くことができ、私たちは電卓を使って計算し、その答えは正しいです。
数論では、線形合同式は合同の基礎方程式である、「リニアは」未知の方程式の数がこのように、一度であることを示します。
ax≡b(mod n)を計算式。最大公約数の分割は、Bおよびnである場合のみとする場合は、この式は解を有する(GCDとして(Nと称する)| B)。
x0が方程式の解であり、この場合、すべての溶液は、以下のように表すことができます。
{X0 + KN / D | (k∈z)}
前記a及びdは、nの最大公約数です。完全モジュロN {0,1、...、N-1}の残りの行は、厳密解を日間。
線形合同方程式AX≡B(mod n)を計算する(1)のために
D = GCD(n)の場合、Bで割っD、次にB / Dは、整数です。AR + SN = Dユークリッド使用することができる整数の定理によって集ペイ(R、S)
したがって、X0 = RB / Dは、式(1)の溶液です。他のソリューションは、n / dおよびX合同についてです。即ちx≡x0+(N / D)* T(mod n)を計算する(0≤t≤d-1)。
例えば、Dが式12X≡20(MOD 28)= GCD(12,28)= 4。
注(-2)281 4 = 12、従ってx0≡5*( - 2)≡-10≡4(MOD 7)の解です。
モジュロ28、T = 1、x≡4+(4分の28)*1≡11(28 MOD)。
t=2,x≡4+(28/4)*2≡18 (mod 28);
t=3,x≡4+(28/4)*3≡25 (mod 28) 。
すべての溶液は、{4,11,18,25}です。
X 1(MOD b)の溶液に対して最小の正の整数AX≡合同式を求めます。
すなわちAX = MBを求める+ R 1 = NB + R
= GCD(a、b)は、(Yに対応nm)とすることにより、アプリケーション斧+ユークリッドこの式を拡張変形AX +(NM)B = 1、すなわち、
実際xolution斧≡1(MOD b)はGCDされる(B)| 1、すなわちGCD(A、B)= 1。
= 1(x、整数y)でユークリッド膨張斧+を用いて見出さ
拡張ユークリッドの定理
ユークリッドの定理を拡張:機能不全のための2つは0の整数、bは、==のGCD(b)で解xの集合、Y、ように斧+が存在しなければなりません。
ユークリッド拡大を図るには、以下のプログラム、xとyは、グローバル変数に保存されます
GCD整数(INTのA、int型B)
{
int型のT、D、
IF(B == 0)
{
X = 1;
Y = 0;
//ケースb == 0は、すなわちGCD(0)= =。元の式になる= ==によって+ AX GCD(A、B) - > 1 == X、Y == 0。
戻りA; //戻り、最大公約数のB値
}
D = GCD(B、 %B); //ユークリッド最大公約数使用
T = Xを、
X = Y;
Y = T-(A / B)* Y; // 2で未知の
リターンD; //は、Bを返します値GCD
}
// 2 ==のGCD(によって未知の斧+について説明 B)(1)
ルールの説明において、x、yは最初の再帰の値を表し、X1、Y1は、第二の再帰を示し値。
次いでGCD(A、B)== GCD(B、%b)は、同時に、式1に代入して、
==のBX1 +(%b)はY1だけあり斧+。適切な外観の変形
BX1 +(%b)はY1 == BX1 +(A-(a / b)がb)のY1 == AY1 + B(X1-(/ b)のY1)、
== AY1 + B(X1-(/ B)* Y1)で最終的に得られた斧+
言い換えれば:
次の深さx Y1に等しい深さに、
次X1-(A / B)に等しい深さ* Y1にY深。
分周器の上記導出を使用する場合*なお、整数除算であります
したがって、溶液== GCD(b)は、X、Yの組によって不定詞斧+を得ました。
だから、== Cによる平均不定詞斧+のために、解決策は、それがどうあるべきかです。
非常に単純な、X1 = X (C / GCD(A、B))、Y1 = Y(C / GCD(A、B))
少し深いので、実際には解の集合を解決するために、一般的に、すべての問題を解決されていません
私たちは今、それが何であるか、このソリューションのすべて、その後、ソリューションのすべてを取得したいですか?
仮定D = GCD(A、B)= X0 + Bその後、X / D. T; Y = YO-A / Dの T、Tは任意の定数整数です。
コードは以下の通りであります:
#include<stdio.h>
int Extragcd(int a,int b,int *x,int *y)
{
int d,t;
if(b==0) //递归调用终止条件,当根据欧几里得辗转相除法则,余数为0停止
{
*x=1;
*y=0;
return a;
}
else
{
d=Extragcd(b,a%b,x,y);
t=*x; //根据下一个x1,y1的值,倒推前一个x,y的值
*x=*y;
*y=t-a/b*(*y);
return d;
}
}
int main()
{
int a,b,x,y;
int ans;
scanf("%d%d",&a,&b);
ans=Extragcd(a,b,&x,&y); //同余方程 ax ≡1 (mod b) 有解的充分条件是 gcd(a,b)==1
if(ans!=1) return 0;
//根据若x是方程的一个解,则方程的所有解为x+k*b k为整数
x=x%b; //保证最小的正整数解x ,且x属于{0,1,2,3...b-1}
while(x<=0)
x+=b ;
printf("%d\n",x);
return 0;
}