NTT ããŒã¿æ°çã·ã¹ãã ã§ã¢ã«ãŽãªãºã ã®æ¢æ±ãããŠãã倧槻 (éç§°ãããã¡ãã) ã§ãã奜ããªã¢ã«ãŽãªãºã ã¯äºéšãããã³ã°ã§ããä»åã¯ãæŽå²ã®èšé²ã«æ®ãæå€ã®ã¢ã«ãŽãªãºã ã® 1 ã€ãšããŠç¥ããããŠãŒã¯ãªããã®äºé€æ³ã«ã€ããŠæžããŸãã
ãŠãŒã¯ãªããã®äºé€æ³ã¯ãæå€§å ¬çŽæ°ãæ±ããããäžæ¬¡äžå®æ¹çšåŒ $ax + by = c$ ã«å¿çšããããªã©ã倧åŠåéšã§ãã銎æã¿ã®ã¢ã«ãŽãªãºã ã§ãããæŽæ°è«çã¢ã«ãŽãªãºã ãæ°ãäžãã¢ã«ãŽãªãºã ã«ãããŠæ ¹å¹¹ãæãéèŠãªãã®ã§ããããŸãã
ä»åã®èšäºã§ã¯ç¹ã«ãäžæ¬¡äžå®æ¹çšåŒ $ax + by = c$ ã®æŽæ°è§£ãäžè¬ã«æ±ããã¢ã«ãŽãªãºã ãšããŠç¥ããããæ¡åŒµãŠãŒã¯ãªããã®äºé€æ³ãã®çè§£ãç®æããŸãã
1. ãŠãŒã¯ãªããã®äºé€æ³ãšã¯
ãŠãŒã¯ãªããã®äºé€æ³ã¯ã2 ã€ã®æŽæ° $a$, $b$ ã®æå€§å ¬çŽæ°ãå¹çããæ±ããã¢ã«ãŽãªãºã ã§ããæ¬èšäºã§ã¯ $a$ ãš $b$ ã®æå€§å ¬çŽæ°ã ${\rm gcd}(a, b)$ ãšè¡šãããšã«ããŸãã倧åŠåéšã§ãã銎æã¿ã®è¡šèšæ³ã§ãã
1-1. ãŠãŒã¯ãªããã®äºé€æ³ã®ããæ¹
300 ãš 780 ã®æå€§å ¬çŽæ°ãæ±ããããšããŸãããã®ãšãã以äžã®æé ã§æ±ããããšãã§ããŸã:
- 780 ã 300 ã§å²ã:ã780 ÷ 300 = 2 ã»ã»ã» 180
- 300 ã 180 ã§å²ã:ã300 ÷ 180 = 1 ã»ã»ã» 120
- 180 ã 120 ã§å²ã:ã180 ÷ 120 = 1 ã»ã»ã» 60
- 120 ã 60 ã§å²ã:ã120 ÷ 60 = 2
- å²ãåããããããŸãã§ãæåŸã«å²ã£ãæ°ãçãïŒ 60
ããªãã¡ã${\rm gcd}(300, 780) = 60$ ã§ãããã®ããã«ä»¥äžã®ãããŒããã£ãŒãã®ãããªæé ãç¹°ãè¿ãã¢ã«ãŽãªãºã ã§ãã
ã
ã
ãã®ã¢ã«ãŽãªãºã ã®æ žå¿éšåã¯ã倧ããæ¹ããå°ããæ¹ãå²ãã倧ããæ¹ãäœãã§çœ®ãæãããã®ãšããã«ãããŸããå ·äœçãªåãã¯ä»¥äžã®ããã«ãªããŸãã(780, 300) ã§èšãã°ã倧ããæ¹ããå°ããæ¹ã§å²ããš 780 ÷ 300 = 2 ã»ã»ã» 180 ã§ã780 ãäœãã® 180 ã§çœ®ãæãããšã(180, 300) ã«ãªããŸããåã³å€§ããæ¹ããå°ããæ¹ã§å²ããš 300 ÷ 180 = 1 ã»ã»ã» 120 ã§ (180, 120) ã«ãªããŸãã
ãããŒããã£ãŒããçµäºããç¬éã確èªãããšãæåŸã¯ (120, 60) ã«å¯Ÿã㊠120 ÷ 60 = 2 ã§ãäœã㯠0 ãªã®ã§ (0, 60) ã«ãªããŸããäžæ¹ã 0 ã«ãªã£ãã®ã§çãã¯ããäžæ¹ã® 60 ã§ãã
1-2. ãŠãŒã¯ãªããã®äºé€æ³ããªãå¿ èŠã
ç§ãã¡ãæå€§å ¬çŽæ°ã»æå°å ¬åæ°ãšãã£ãæŠå¿µã«æåã«åºäŒãã®ã¯ãå°åŠæ ¡ã§æãã
- åæ°ã®çŽå (åå忝ãæå€§å ¬çŽæ°ã§å²ã)
- åæ°ã®éå (忝ãæå°å ¬åæ°ã«æãã)
ãšãã£ããããã§ãããããã§ãããã§ããŠãŒã¯ãªããã®äºé€æ³ããæãã£ã人ã¯ã»ãšãã©ããªãããã§ããå€ãã®æ¹ã¯
- çŽ å æ°åè§£
- ãã ãç®
ãããŠããã®ã§ã¯ãªãããšæããŸããäŸãã° 160 ãš 1200 ã®æå€§å ¬çŽæ°ãæ±ãããšãã
ãçŽ å æ°åè§£ã
$160 = 2^5 Ã 5$
$1200 = 2^4 Ã 3 Ã 5^2$
ãªã®ã§ã${\rm gcd}(160, 1200) = 2^4 à 5 = 80$ ãšããæãã§ãã
ããã ãç®ã
ãããå€ãã®æ¹ã®èšæ¶ã«æ®ã£ãŠããããæ¹ãããããŸããã
ã
ãããã®çŽ å æ°åè§£ããã ãç®ãšãã£ãæ¹æ³ã«éŠŽæãã§ãããšããŠãŒã¯ãªããã®äºé€æ³ã¯å¿ èŠãªããã®ã«æãããããããŸããããããã9876543210 ãš 123456789 ã®æå€§å ¬çŽæ°ãæ±ããŠãã ãããšèšããããã©ãã§ãããããããçŽ å æ°åè§£ããã ãç®ã§ãããã«ããæ°ãé ããªãããã§ããããããŠãŒã¯ãªããã®äºé€æ³ã䜿ãã°ã
9876543210 ÷ 123456789 = 80 ã»ã»ã» 90
123456789 ÷ 90 = 1371742 ã»ã»ã» 9
90 ÷ 9 = 10
ãããç°¡åãªèšç®ã§æå€§å ¬çŽæ°ã 9 ã ãšããããŸãã
ãã®ããã«æå€§å ¬çŽæ°ãæ±ããã 2 æ°ã倧ãããªãã°ãªãã»ã©ããŠãŒã¯ãªããã®äºé€æ³ã®å¹çè¯ããéç«ã£ãŠæ¥ãããã«ãªããŸãã1-4 ç¯ã«ãŠãèšç®éãªãŒããŒã®èгç¹ãããŠãŒã¯ãªããã®äºé€æ³ã®å¹çè¯ãã«ã€ããŠè¿°ã¹ãŸãã
1-3. ãŠãŒã¯ãªããã®äºé€æ³ã®ããã°ã©ã
ãã®ç¯ã¯ããã°ã©ãã³ã°ãåŠãã§ããæ¹åãã«ãªããŸããäžã«ç€ºãããããŒãã£ãŒããããã°ã©ã ã«èµ·ããã®ã¯ããã»ã©é£ãããªããååž°é¢æ°ãçšãããšç¶ºéºã«å®è£ ã§ããŸããC++ ã§ã®å®è£ äŸã瀺ããŸãã
泚æç¹ãšããŠãäžã®å®è£ ã§ã¯ãa ãš b ã®ãã¡ã®ã©ã¡ãã®æ¹ã倧ããããã®å€å®ãããã«æžãŸããŠããŸããa < b ã§ãã£ãŠã a % b = a ãªã®ã§ãGCD(b, a) ãååž°çã«åŒã°ããããšã«ãªããa ãš b ãããã§å ¥ãæ¿ããã®ã§åé¡ãªãã§ãã
ãããŠäžåºŠ a >= b ãæºããããªãã° b >= a%b ãšãªãã®ã§ãååž°çã«åŒã°ãã颿°ãã¡ã¯åžžã« a >= b ãæºããç¶ããããšã«ãªããŸãã
/* a ãš b ã®æå€§å
¬çŽæ°ãè¿ã颿° */
long long GCD(long long a, long long b) {
if (b == 0) return a;
else return GCD(b, a % b);
}
1-4. ãŠãŒã¯ãªããã®äºé€æ³ã®èšç®é
ãŠãŒã¯ãªããã®äºé€æ³ã®èšç®éã«é¢ããè°è«ãããŸããããã§ã¯ãŠãŒã¯ãªããã®äºé€æ³ã®èšç®ã¹ãããåæ°ããé€ç®ã®åæ°ãã§è©äŸ¡ããããšã«ããŸãããŸãã¯ãã£ãããšè©äŸ¡ããŠã¿ãŸãã$a \ge b$ ãšããŸãã
$a$ ã $b$ ã§å²ã£ãŠã$a = qb + r$ ($q$ ã¯å, $r$ ã¯äœã) ãšãããšãã$q \ge 1$ ããã$a \ge b + r \ge 2r$ ($b \ge r$ ãã) ãšãªãã®ã§ã$r \le a/2$ ãæãç«ã¡ãŸãã
ãã£ãŠãŠãŒã¯ãªããã®äºé€æ³ã®ã¹ãããã 2 åç¹°ãè¿ã㊠$(a, b)$ -> $(b, r_1)$ -> $(r_1, r_2)$ ãšãªã£ããšãã$a$ ã $b$ ã¯åå以äžã«ãªã£ãããšã«ãªããŸãããã£ãŠãã£ãããš $2\log{a}$ åã®èšç®ã¹ãããåæ°ãšããããšã«ãªããŸãããããã£ãŠãŠãŒã¯ãªããã®äºé€æ³ã®èšç®ã¹ãããåæ°ã¯ $O(\log{a})$ ã«ãªããŸãã
èšç®ã¹ãããåæ°ãææªã«ãªãã±ãŒã¹
ãŠãŒã¯ãªããã®äºé€æ³ã®èšç®åæ°ãã©ããªå Žåã«ææªã«ãªãã®ããèããŠã¿ãŸããããã¯ãã£ããããæ°åã®é£æ¥ 2 é ã§ãããã£ããããæ°åã¯
$1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...$
ãšãããã®ã§ããã${\rm gcd}(89, 144)$ ãèšç®ãããš
${\rm gcd}(144, 89)$ = ${\rm gcd}(89, 55)$ = ${\rm gcd}(55, 34)$ = ${\rm gcd}(34, 21)$ = ${\rm gcd}(21, 13)$ = ${\rm gcd}(13, 8)$ = ${\rm gcd}(8, 5)$ = ${\rm gcd}(5, 3)$ = ${\rm gcd}(3, 2)$ = ${\rm gcd}(2, 1)$ = ${\rm gcd}(1, 0) = 1$
ãšãªããé·ãéã®ãã§ãããã£ããããæ°åã®äžè¬é ã
$a_n = \frac{1}{\sqrt{5}} ((\frac{1+\sqrt{5}}{2})^{n} - (\frac{1-\sqrt{5}}{2})^{n})$
ã§ããããšãèãããš (ãã®ããŒãžåç §)ã$\gamma = \frac{1+\sqrt{5}}{2}$ ($\gamma$ ã¯ããããé»éæ°) ãšããŠãèšç®ã¹ãããåæ°ã¯ $O(\log_{\gamma}{a})$ ã ãèŠããããšã«ãªããŸãã
ã©ã¡ã®å®ç
以äžã®èå¯ã«åºã¥ãã以äžã®å®çã 19 äžçŽã«ã¯ç€ºãããŠããŸãã (ã©ã¡ã®å®ç):
$a, b$ ãéè² æŽæ°ãšããå°ããæ¹ã®æ°ãå鲿³ã§è¡šãããšãã®æ¡æ°ã $d$ ãšããããã®ãšãããŠãŒã¯ãªããã®äºé€æ³ãçšã㊠$a$ ãš $b$ ã®æå€§å ¬çŽæ°ãæ±ãããšãã®èšç®åæ°ã¯ã$5d$ å以äžãšãªãã
蚌æã¯ãã£ããããæ°åãçšããäžã®èå¯ããã¡ããšè©°ããã°é£ãããªãã§ãããã®ããŒãžã«ãã¡ããšãã蚌æããããŸããå·éã«èãããšããã䞻匵ã§ã
1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000
ãšãã£ã 100 æ¡ã®æŽæ°ã«å¯ŸããŠããé«ã 500 åã®èšç®ã¹ãããã§æå€§å ¬çŽæ°ãæ±ããããããšã«ãªããŸãããããããã¯çžåœã«ææªãªã±ãŒã¹ã®è©±ã§ãããå®éäžå¹³åçã«ã¯ãã£ãšé¥ãã«å°ãªãèšç®åæ°ã§æå€§å ¬çŽæ°ãæ±ããããŸãã
çŽ å æ°åè§£ã«ããæ¹æ³ãšã®æ¯èŒ
2 ã€ã®æŽæ° $a, b$ ($a \ge b$) ã®æå€§å ¬çŽæ°ãæ±ããã¢ã«ãŽãªãºã ãšããŠãçŽ å æ°åè§£ãšæ¯ã¹ããšãŠãŒã¯ãªããã®äºé€æ³ã¯èããå¹çãããã§ããèšç®éã®èгç¹ããæ¯èŒããŠã¿ãŸãã
- çŽ å æ°åè§£ã¯ãã€ãŒããªã¢ã«ãŽãªãºã ã§ã¯ãäŸãã° $1$ ãã $a$ ãŸã§é ã«è©Šãå²ãããããš $O(a)$ ããããŸã
- ãŠãŒã¯ãªããã®äºé€æ³ã¯ $O(\log{a})$ ã§èšç®ã§ããŸã
ãã®å·®ã¯æŽç¶ã§ã$a$ ã倧ãããªããšæ·±å»ãªå·®ã«æ¡å€§ããŠè¡ããŸããç¹ã«åè ã¯ææ°æéã¢ã«ãŽãªãºã (ãã®çç±ã¯ãããåç §) ã§ãåŸè ã¯å€é åŒæéã¢ã«ãŽãªãºã ã«ãªã£ãŠããŸããçŽ å æ°åè§£ã¯ããå°ã工倫ããããšãã§ããŠäŸãã°ã¡ãã£ãšèãããš $O(\sqrt{a})$ ãªã¢ã«ãŽãªãºã ãåŸãããŸãããããã©ãã»ã©å·¥å€«ãéããŠãçŽ å æ°åè§£ã«å¯ŸããŠã¯çŸåšã®ãšããå€é åŒæéã¢ã«ãŽãªãºã ã¯åŸãããŠããŸããããä»åŸãåŸããããããªããšèšãããŠããŸãã
2. ãŠãŒã¯ãªããã®äºé€æ³ã®åç
ãªããŠãŒã¯ãªããã®äºé€æ³ã«ãã£ãп޿° $a, b$ ã®æå€§å ¬çŽæ°ãæ±ããããã®ããçè§£ããããšã¯éèŠã§ãã以äžã®å®çã«äŸã£ãŠããŸãããªãã蚌æäžã§çšããŠãã $a | b$ ãšãã£ãèšæ³ã¯ã$b$ ã $a$ ã®åæ°ã§ããããšãã$a$ ã $b$ ã®çŽæ°ã§ããããšãã衚ããŠããŸãã
$a, b, q$ ãæŽæ°ãšãããš ${\rm gcd}(a, b) = {\rm gcd}(a - qb, b)$ ãæãç«ã€
ã蚌æã
$d = {\rm gcd}(a, b)$ ãšãããšã$a$ ã $b$ ã $d$ ã®åæ°ãªã®ã§ã$a - qb$ ã $d$ ã®åæ°ã§ããããã£ãŠã$a - qb$ ã $b$ ã $d$ ã§å²ãåããã®ã§ $d$ | ${\rm gcd}(a - qb, b)$ ããªãã¡ ${\rm gcd}(a, b)$ | ${\rm gcd}(a - qb, b)$ ãæãç«ã€ã
éã« $a' = a - qb$ ãšãããšã$a = a' + qb$ ãšãªããããã§ $d' = {\rm gcd}(a', b)$ ãšãããšå ã»ã©ãšãŸã£ããåæ§ã®è°è«ã«ãã£ãŠã$d'$ | ${\rm gcd}(a' + qb, b)$ ããªãã¡ ${\rm gcd}(a - qb, b)$ | ${\rm gcd}(a, b)$ ãå°ãããã
以äžã«ããã${\rm gcd}(a, b) = {\rm gcd}(a - qb, b)$ ãåŸãã
(蚌æçµ)
ã
äžã®å®çããç¹ã«ã æŽæ° $a$ ãš $b$ ã«å¯Ÿã㊠$a = qb + r$ ($q$ ã¯å, $r$ ã¯äœã) ãšã㊠${\rm gcd}(a, b) = {\rm gcd}(a - qb, b)$ ãåŸãã®ã§ããŠãŒã¯ãªããã®äºé€æ³ã®æ£åœæ§ã瀺ãããŸããã
ãããŠãã®èšŒæã®å¯ç£ç©ãšããŠã$q$ ãã$a$ ã $b$ ã§å²ã£ããšãã®åãã§ãªããŠãããããšãããããŸããç¹ã« ${\rm gcd}(a, b) = {\rm gcd}(a - b, b)$ ãæãç«ã¡ãŸããã
$a â¡ c$ $({\rm mod}.b)$ ãªãã° ${\rm gcd}(a, b) = {\rm gcd}(c, b)$
ãæãç«ã¡ãŸãã
3. äžæ¬¡äžå®æ¹çšåŒ ax + by = c ã®æŽæ°è§£
$6x + 8y = 10$ ã®æŽæ°è§£ãæ±ããããšãã£ãåé¡ã¯å€§åŠå ¥è©Šã§ãé »åºã§ãããããŠããã¯ãŠãŒã¯ãªããã®äºé€æ³ã®å žåçãªæŽ»çšäŸã§ãããããæ¡åŒµãŠãŒã¯ãªããã®äºé€æ³ããšãåŒã°ããŠããŸããå®ã¯æŽæ°è«çã«ãããé«åºŠãªç°è«ãžãšç¹ããéèŠãªè©±é¡ã ã£ããããŸã (äžã®äž»åŒµã¯ãæŽæ°ç°ãåé ã€ãã¢ã«æŽåã§ããããšãã瀺ããã®ã«ä»ãªããªãã§ã)ã
3-1. äžæ¬¡äžå®æ¹çšåŒ ax + by = c ãæŽæ°è§£ããã€æ¡ä»¶
$a, b, c$ ã $0$ 以å€ã®æŽæ°ãšãããäžæ¬¡äžå®æ¹çšåŒ $ax + by = c$ ãæŽæ°è§£ããã€ããã®å¿ èŠååæ¡ä»¶ã¯ $c$ ã ${\rm gcd}(a, b)$ ã§å²ãåããããšã§ããã
ãç¥èšŒã
ãŸããäžæ¬¡äžå®æ¹çšåŒ $ax + by = c$ ãæŽæ°è§£ããã€ãªãã° $c$ ã ${\rm gcd}(a, b)$ ã§å²ãåããå¿
èŠãããããšã¯æããã§ããã$d = {\rm gcd}(a, b)$ ãšãããšã$a$ ã $b$ ã $d$ ã§å²ãåããããšãã $ax + by$ ã $d$ ã§å²ãåããããã§ããã
éã« $c$ ã ${\rm gcd}(a, b)$ ã§å²ãåãããšãã$ax + by = c$ ãæŽæ°è§£ããã€ããšãç€ºãæ¹ãé£ããã§ããå ·äœçã«æŽæ°è§£ãæ§æããããšã«ãã£ãŠç€ºããŸãããŸã $c$ ã ${\rm gcd}(a, b)$ ã§å²ãåããã®ã§ã$c = c'{\rm gcd}(a, b)$ ãšãããšã$ax + by = c'{\rm gcd}(a, b)$ ãšãªããŸãã
ãããŠå®ã¯ $ax + by = {\rm gcd}(a, b)$ ãæºããæŽæ° $x, y$ ãååšããããšãç¥ãããŠããŸãããã®è§£èª¬ã¯ 3-3 ã 3-4 ã§è¡ããŸãã$ax + by = {\rm gcd}(a, b)$ ãæºãã $x, y$ ãååšãããªãã°ã䞡蟺 $c'$ åããŠ
$a(c'x) + b(c'y) = c$
ãšãªãã®ã§ã$(c'x, c'y)$ ã $ax + by = c$ ã®æŽæ°è§£ã«ãªã£ãŠããŸãã
(蚌æçµ)
3-2. äžæ¬¡äžå®æ¹çšåŒ ax + by = c ã®æŽæ°è§£ãæ±ããå ·äœäŸ
å®éã«å ·äœçãªäžå®æ¹çšåŒ $111x + 30y = 12$ ãè§£ããŠã¿ãŸãã${\rm gcd}(111, 30) = 3$ ããããŸã㯠$111x + 30y = 3$ ãæºãã $x, y$ ãæ±ããŸãããŠãŒã¯ãªããã®äºé€æ³ãé©çšãããš
| å²ãç® | ããç®ã®åŒã«çŽã | ããã«åŒå€åœ¢ãã |
|---|---|---|
| $111 ÷ 30 = 3$ ããŸã $21$ | $111 = 3Ã30 + 21$ | $21 = 111 - 3Ã30$ |
| $30 ÷ 21 = 1$ ããŸã $9$ | $30 = 1Ã21 + 9$ | $9 = 30 - 1Ã21$ |
| $21 ÷ 9 = 2$ ããŸã $3$ | $21 = 2Ã9 + 3$ | $3 = 21 - 2Ã9$ |
| $9 ÷ 3 = 3$ |
ãšãªãã®ã§ãããããéã«ãã©ã£ãŠãããŸã:
$3 $
$= 21 - 2Ã9$
$= 21 - 2Ã(30 - 1Ã21)ãã(9 ã眮ãæãã)$
$= (-2)Ã30 + 3Ã21$
$= (-2)Ã30 + 3Ã(111 - 3Ã30)ãã(21 ã眮ãæãã)$
$= 3Ã111 + (-11)Ã30$
ãšãªããŸããããã£ãŠã$(x, y) = (3, -11)$ ã $111x + 30y = 3$ ãæºããã®ã§ãããã 4 åã㊠$(x, y) = (12, -44)$ ã $111x + 30y = 12$ ãæºãããŸãã
ãã¹ãŠã®è§£ãæ±ãã
æŽæ°è§£ã 1 ã€æ±ããã ãã§ãªããã¹ãŠæ±ãããå Žåã«ã¯ä»¥äžã®ããã«ããŸã:
$111x + 30y = 12$
$12Ã111 + (-44)Ã30 = 12$
ã蟺ã åŒããš
$111(x-12) + 30(y+44) = 0$
â $37(x-12) = -10(y+44)$ã(䞡蟺ã 3 ã§å²ã£ã)
37 ãš 10 ã¯äºãã«çŽ ãªã®ã§ $x-12$ 㯠10 ã®åæ°ã«ãªããŸãããããã£ãŠ $t$ ãä»»æã®æŽæ°ãšããŠ
$x - 12 = 10t$
ãšè¡šããŠããããä»£å ¥ãããš $y + 44 = -37t$ ãšãªããŸãããã£ãŠäžè¬è§£ã¯ $(x, y) = (10t + 12, -37t - 44)$ ãšæ±ãŸããŸããããããå®éã«è§£ã«ãªã£ãŠããããšã¯ä»£å ¥ããã°ç¢ºãããããŸãã
3-3. ax + by = gcd(a, b) ã®æŽæ°è§£ãååšããããšã®äžè¬è«
åç¯ã§å ·äœç㪠$a, b$ ã®æ°å€ãäžããããŠããå Žåã®è§£æ³ãäžããŸããã倧åŠå ¥è©Šã§ã¯æœè±¡çã«äžè¬ã®æŽæ° $a, b$ ã«å¯Ÿã㊠$ax + by = {\rm gcd}(a, b)$ ãæºããæŽæ° $(x, y)$ ãååšããããšã蚌æãããåºé¡ããããŸããæ¹æ³ãšããŠã¯å€§ããåããŠ
- ãæ¡åŒµãŠãŒã¯ãªããã®äºé€æ³ããå ·äœçã«èšè¿°ãã (3-4 ã«ãŠ)
- $ax + by$ ã§è¡šãããæå°ã®æ£ã®æŽæ°ã $d_0$ ãšãã㊠$d_0 = {\rm gcd}(a, b)$ ã瀺ã
- $a$ ãæ³ãšã㊠$a$ ãšäºãã«çŽ ãªæŽæ°ãã¡ã乿³çŸ€ããªãããšã掻çšãã (æ¬èšäºã§ã¯çç¥ããã®ããŒãžã«é«æ ¡æ°åŠã§çè§£ã§ããèšè¿°ããããŸã)
ã® 3 ã€ã®æ¹æ³ãã¡ãžã£ãŒã§ããæ¬¡ç¯ã§ 1 çªç®ã®æ¹æ³ã瀺ããæ¬ç¯ã§ã¯ 2 çªç®ã®æ¹æ³ã瀺ããŸããæ¬ç¯ã®èšŒææ¹æ³ã¯å€§åŠåéšæ¥çã§ãããèŠãããèšŒææ¹æ³ã§ãã
ã蚌æã
$ax + by$ ã®åœ¢ã§è¡šãããæå°ã®æ£ã®æŽæ°ã $ax_0 + by_0 = d_0$ ãšããã
ãã®ãšãã$ax + by$ ã§è¡šãããæŽæ° $k$ ã¯ãã¹ãŠ $d_0$ ã®åæ°ã«ãªãããšã瀺ãã
$k$ ã $d_0$ ã§å²ã£ãäœãã $r$ ($0 \le r < d_0$) ãšããŠ
$k = qd_0 + r$
ãšããããã®ãšã $r = 0$ ã«ãªãããšã瀺ãã°ããã
$r = k - qd_0 = (ax + by) - q(ax_0 + by_0) = a(x - qx_0) + b(y - qy_0)$
ã§ããããã$r$ ããŸã $ax + by$ ã®åœ¢ã§è¡šãããæŽæ°ãšãªã£ãŠãããããã§ãã仮㫠$r > 0$ ã§ãããšä»®å®ãããšã$r < d_0$ ããã$d_0$ ã $ax + by$ ã®åœ¢ã§è¡šãããæå°ã®æ£ã®æŽæ°ã§ããããšã«ççŸãããåŸã£ãŠ $r = 0$ ã§ããããšã瀺ãããã
以äžããã$ax + by$ ã§è¡šãããæŽæ°ã¯ãã¹ãŠ $d_0$ ã®åæ°ã§ããããããã $d_0$ ãå ·äœçã«æ±ããããŸãã$d = gcd(a, b)$ ãšãããšã$a$ ã $b$ ã $d$ ã®åæ°ã§ããããã$ax + by$ ã¯å¿ ã $d$ ã®åæ°ã§ãããåŸã£ãŠ $d$ | $d_0$ ã§ããã
次㫠$d_0$ | $d$ ã瀺ãã$a$ èªèº«ã $ax + by$ ã®åœ¢ã§è¡šãããæŽæ°ã§ãããã ($aÃ1 + bÃ0 = a$ ãã)ã$a$ 㯠$d_0$ ã®åæ°ã§ãããåæ§ã«ã㊠$b$ ã $d_0$ ã®åæ°ã§ãããåŸã£ãŠã$d_0$ 㯠$a$ ãš $b$ ã®å ¬çŽæ°ã§ãããããªãã¡ $d_0$ 㯠$d = gcd(a, b)$ ã®çŽæ°ã§ãã£ãŠã$d_0$ | $d$ ãæç«ããã
以äžããã$d_0 = d = gcd(a, b)$ ã§ããããšã瀺ããããç¹ã« $ax + by = d$ ãšãªããããªæŽæ° $(x, y)$ ãååšããããšã瀺ãããã
(蚌æçµ)
3-4. æ¡åŒµãŠãŒã¯ãªããã®äºé€æ³ã®ã¢ã«ãŽãªãºã çèšè¿°
$ax + by = {\rm gcd}(a, b)$ ãæºãã $(x, y)$ ãæ±ããã¢ã«ãŽãªãºã ãå ·äœçã«å°åºããŸãããã®ã¢ã«ãŽãªãºã ãç¹ã«æ¡åŒµãŠãŒã¯ãªããã®äºé€æ³ãšåŒã³ãŸããããããã¯ãååž°é¢æ°ãçšããããšã§ç°¡æœã«å®çŸã§ããŸãã$d = {\rm gcd}(a, b)$ ãšãããŸãã
ãŸãã¯æ®éã®ãŠãŒã¯ãªããã®äºé€æ³ãšåæ§ã« $a$ ã $b$ ã§å²ã£ãŠ
$a = qb + r$
ãšããŸãããããå ã®æ¹çšåŒã«ä»£å ¥ãããšã
$(qb + r)x + by = dãâãb(qx + y) + rx = d$
ãšãªããŸããããã«ãã£ãŠ $(a, b)$ ã«é¢ããåé¡ããããããæ°å€ã®å°ã㪠$(b, r)$ ã«é¢ããåé¡ã«åž°çã§ããŸããããããååž°çã«è§£ãã®ãæ¡åŒµãŠãŒã¯ãªããã®äºé€æ³ã§ããå ·äœçã«ã¯ $(b, r)$ ã«é¢ããå°åé¡ãè§£ããŠ
$bs + rt = d$
ãæºããè§£ $(s, t)$ ãååž°çã«åŸããããšãããšã
$qx + y = s, x = tãâãx = t, y = s - qt$
ãšãã颚ã«ãå ã®åé¡ã®è§£ãæ§æã§ããŸããããã§æ°ã«ãªãã®ã¯ã$bs + rt = d$ ãæºãã $(s, t)$ ãæ¬åœã«ååž°çã«åŸããããã©ããã§ããããã瀺ãããã«ãŠãŒã¯ãªããã®äºé€æ³ã®çµäºæ¡ä»¶ãèããŠã¿ãŸãããŠãŒã¯ãªããã®äºé€æ³ã¯æåŸã¯ $(d, 0)$ ã®åœ¢ã«ãªããŸããã€ãŸãã¯ã
$dx + 0y = d$
ãæºãã $(x, y)$ ãæ±ããåé¡ãŸã§éããŠæ¥ãŸãããã®è§£ã¯ $(x, y) = (1, 0)$ ã§æããã§ãããã£ãŠããããååž°çã«ãã³ãã³äžãžé¡ãããšã§å ã®æ¹çšåŒã®è§£ãæ§æã§ããŸãã
以äžã®ã¢ã«ãŽãªãºã ã C++ ã§å®è£ ãããšä»¥äžã®ããã«ãªããŸã:
// è¿ãå€: a ãš b ã®æå€§å
¬çŽæ°
// ax + by = gcd(a, b) ãæºãã (x, y) ãæ ŒçŽããã
long long extGCD(long long a, long long b, long long &x, long long &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
long long d = extGCD(b, a%b, y, x);
y -= a/b * x;
return d;
}
ããã»ã©ã® $111x + 30y = 3$ ã«ã€ããŠç¢ºãããŠã¿ãŸãã
# include <iostream>
using namespace std;
// extGCD ã¯ç¥
int main() {
long long x, y;
extGCD(111, 30, x, y);
cout << x << ", " << y << endl;
}
å®è¡çµæã¯ä»¥äžã®ããã«ãªããŸãã:
3, -11
確ãã«ããã»ã©æã§æ±ããçµæã«äžèŽããŠããŸãã
4. ãŠãŒã¯ãªããã®äºé€æ³ãšãçŽ å æ°åè§£ã®äžææ§ãšã®é¢ä¿ (ããŸã)
éåžžã®æŽæ°ã®äžçã«ãããŠãçŽ å æ°åè§£ã®äžææ§ããæç«ããããšã¯ããç¥ãããŠããŸããå®ã¯è€çŽ æŽæ°ã®äžçã§ããçŽ å æ°åè§£ã®äžææ§ãã¯æç«ããŸãããã®äž¡è ã®æ ¹åºã«ã¯ãšãã«
- ãŠãŒã¯ãªããã®äºé€æ³ãé©çšã§ãã
ãšããå ±éã®æ§é ããããŸããç°è«ã«ãããŠäžè¬ã«ä»¥äžã®ãããªå®çãæãç«ã£ãŠããŸã:
- ãŠãŒã¯ãªããæŽåã¯åé ã€ãã¢ã«æŽåã§ãã
- åé ã€ãã¢ã«æŽåã¯äžæåè§£æŽåã§ãã (çŽ å æ°åè§£ã®äžææ§ãæãç«ã€)
ãŠãŒã¯ãªããæŽåãšã¯ãã£ããããŠãŒã¯ãªããã®äºé€æ³ãé©çšã§ããæŽåã®ããšã§ããéåžžã®æŽæ°ç°ãè€çŽ æŽæ°ç°ããŠãŒã¯ãªããæŽåã§ãããããŠæŽå $R$ ãåé ã€ãã¢ã«èåã§ãããšã¯ãŸãã« {$a_1 x_1 + a_2 x_2 + ... + a_n x_n | x_1, x_2, ..., x_n \in R$} ã§è¡šãããå ããã¹ãŠåäžã®å $d$ ã®åæ°ã«ãªããããªãã®ã®ããšãèšããŸããã3-3. ax + by = gcd(a, b) ã®æŽæ°è§£ãååšããããšã®äžè¬è«ãã§ãã£ãè°è«ã¯ããŸãã«ãŠãŒã¯ãªããæŽåãåé ã€ãã¢ã«æŽåã§ããããšã®èšŒæã®ç¹æ®ã±ãŒã¹ã«ãªã£ãŠããŸãããäžè¬è«ãã»ãŒåæ§ã«èšŒæã§ããŸãã
ããã«åé ã€ãã¢ã«æŽåã«ãããŠçŽ å æ°åè§£ã®äžææ§ãæç«ããããšã瀺ãã«ã¯ããæ¢çŽå ããçŽ å ããšããæŠå¿µãå®çŸ©ããŠããããã®ç䟡æ§ã瀺ããŠããããšã«ãªããŸããããã»ã©é£ããè°è«ã§ã¯ãªãã®ã§ã
ãšãã£ãæžç±ãã¡ãåèã«ãªããšæããŸãã
5. ãããã«
æŽå²äžæå€ã®ã¢ã«ãŽãªãºã ãšããŠéŠŽæã¿ã®æ·±ããŠãŒã¯ãªããã®äºé€æ³ã«ã€ããŠç¹éããŠã¿ãŸãããæ¬èšäºã§ç¹éããéãããŠãŒã¯ãªããã®äºé€æ³ã¯å€§åŠåéšæ°åŠã®æŽæ°åé¡ã«ãããŠé »åºã®ããŒãã§ãããæŽæ°è«çã¢ã«ãŽãªãºã ã®æ ¹å¹¹ãæ¯ãããã®ã§ããããŸãããŸãæ°ãäžãã¢ã«ãŽãªãºã ã§ã¯ãéå ãã®èšç®ãèŠããå Žé¢ãå€ãããŠãŒã¯ãªããã®äºé€æ³ãæå¹ã«çšããããŸãã
ãã®ããã«ãŠãŒã¯ãªããã®äºé€æ³ã¯ãåã«æŽå²äžæå€ã®ã¢ã«ãŽãªãºã ãšããŠã®èšå¿µç¢ã§ããã«ãšã©ãŸãããæ°åŠãã¢ã«ãŽãªãºã ã®æ ¹åºã«æ ¹ãããŠãããã®ã§ããããŸããæ¬èšäºãéããŠãæŽæ°è«ãæŽæ°è«çã¢ã«ãŽãªãºã ã®é¢çœããæãåã£ãŠããã ãããªãã°ãšãŠãå¬ããæ°æã¡ã§ãã£ã±ãã§ãã