ÃÖ´ë°ø¾à¼öÀÇ »êÃâ


ÇÔ¼ö¸í
gcd  ÃÖ´ë°ø¾à¼ö¸¦ »êÃâÇÑ´Ù
Çü½Ä
int gcd(int n1, int n2);
Àμö
n1, n2  2°³ÀÇ ºÎ°¡ ¾Æ´Ñ Á¤¼ö
ÇÔ¼öÄ¡
2°³ÀÇ Á¤¼öÀÇ ÃÖ´ë°ø¾à¼ö
ÁÖÀÇ »çÇ×

¿ë·Ê(gcd-test.c )
gcd(1996, 2000);

ÇÁ·Î±×·¥(gcd.c )
int gcd(int n1, int n2)
{
    if (n2 == 0) return n1;
    else return gcd(n2, n1 % n2);
}
¼³¸í
ÃÖ´ë°ø¾à¼ö¸¦ ¿ä±¸ÇÏ´Â ¹æ¹ýÀº, 2 õ³â ÀÌÀüÀÇ °í´ë ±×¸®½º »ç¶÷¿¡ µû¶ó ´Þ¶ó ¹ß°ßµÇ¾î EuclidÀÇ Àú¼­ ¡¸Elements¡¹¿¡ ÀÚ¼¼ÇÏ°Ô ¾²¿©Á® ÀÖ¾î EuclidÀÇ ¾Ë°í¸®ÁòÀ̶ó°í ÇÏ°í ÀÖ´Ù.

LameÀÇ Á¤¸®¿¡ ÀÇÇØ, ÀÌ ¾Ë°í¸®ÁòÀº Á¤¼öÀÇ ÀÛÀº (ºÐ)ÆíÀÇ ÀÚ¸®¼öÀÇ 5¹è À̳»¿¡¼­ ¹Ýµå½Ã Á¾·áÇÑ´Ù. µû¶ó¼­ °è»ê·®Àº O(logN)ÀÌ´Ù.

¶Ç, n°³¼öÀÇ ÃÖ´ë°ø¾à¼ö¸¦ ¿ä±¸ÇÏ·Á¸é , ¿ì¼± ÃÖÃÊ 2°³ÀÇ Á¤¼ö¿¡ »ó±âÀÇ ¹æ¹ýÀ» Àû¿ëÇØ ÃÖ´ë°ø¾à¼ö¸¦ ¿ä±¸ÇØ ´ÙÀ½¿¡ 3¹ø°ÀÇ Á¤¼ö·Î °è»êÇÑ ÃÖ´ë °ø¾à¼ö·ÎºÎÅÍ ´Ù½Ã ÃÖ´ë°ø¾à¼ö¸¦ °è»êÇÑ´Ù. ÀÌ¿Í °°ÀÌ ¸¶Áö¸· Á¤¼ö±îÁö Á¶] µ¹·ÁÁÖ¸é, n°³ÀÇ Á¤¼öÀÇ ÃÖ´ë°ø¾à¼ö°¡ ¿ä±¸µÈ´Ù.

°ü·Ã ÇÔ¼ö