- ÇÔ¼ö¸í
congruence ÀÏÂ÷ ÇÕµ¿½Ä a x¡Õb (mod m)¸¦ ä¿ì´Â x ¸¦ ¿ä±¸ÇÑ´Ù
- Çü½Ä
int congruence(int a, int b, int m);
- Àμö
a ÇÕµ¿½Ä¿¡ ÀÖ´Â a
b ÇÕµ¿½Ä¿¡ ÀÖ´Â b
m ÇÕµ¿½Ä¿¡ ÀÖ´Â m
- ÇÔ¼öÄ¡
ÇÕµ¿½ÄÀÇ ÇØxÀÇ °ª(0¡Âx£¼m). ÇØ°¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§´Â¡ª1.
- ÁÖÀÇ »çÇ×
- ¿ë·Ê(congruence-test.c )
- ÇÁ·Î±×·¥(congruence.c )
int congruence(int a, int b, int m)
{
int c, d, e, f;
int q, r;
int tmp;
c = a;
e = b;
d = m;
f = 0;
while ((r = c % d) ! = 0) {
q = c / d;
c = d;
d = r;
tmp = f;
f = e - q * f;
e = tmp;
}
if (b % d ! = 0) return -1;
q = (f/d) % (m/d);
if (q < 0) q += m/d;
return q;
}
- ¼³¸í
- ÇÕµ¿½Ä a x¡Õb (mod m)¸¦ Ç®·Á¸é , Çϳª ´õ ÀÚ¸íÇÑ ÇÕµ¿½Ä
m x¡Õ0 (mod m)À» ÀÌ¿ëÇØ, µ¿Ä¡ÀÎ º¯ÇüÀ» ¹Ýº¹Çϸé ÁÁ´Ù. ¸ð·¡
, x ÀÇ °è¼ö a ¿Í m ¿¡ ´ëÇØ¼ EuclidÈ£Á¦¹ýÀ» ÀÌ¿ëÇØ,
x ÀÇ °è¼ö¸¦ ÀÛ°Ô º¯ÇüÇØ ³ª°£´Ù.
- °ü·Ã ÇÔ¼ö
- EuclidÈ£Á¦¹ý