千葉大学 融合理工学府 数学情報科学専攻 数学・情報数理学コース 2024年8月実施 専門 B10
Author
祭音Myyura (co-authored with GPT 6 Astra)
Description
整数 a>b≥0 に対し、次のアルゴリズムを考える。
while b > 0:
r := a mod b
a := b
b := r
return a
ループを k 回実行した直後の a の値を rk とし、r0=a とする。第 k 回の除算の商を qk、総実行回数を N(a,b) とする。
(1) r0,…,rN が単調減少することを示せ。(2) qk≥1 (1≤k<N)、qN≥2 を示せ。(3) d=gcd(a,b) のとき N(a/d,b/d)=N(a,b) を示せ。(4) 実行回数が O(logb) であることを示せ。
题目描述
考虑 Euclid 算法,记每轮结束后的第一变量为 rk、商为 qk、总轮数为 N。(1) 证明 rk 递减。(2) 证明非末轮商至少一、末轮至少二。(3) 证明两输入同时除以最大公约数不改变轮数。(4) 证明轮数为 O(logb)。
Kai
b=0 なら実行回数は 0 である。以下 b>0 とし、r1=b,rN+1=0 と補って書く。
(1), (2)
各除算は
rk−1=qkrk+rk+1,0≤rk+1<rk
を満たす。初めに r0>r1>0 なので r0>r1>⋯>rN>0。ゆえに qk≥1。最後は rN−1=qNrN かつ rN−1>rN なので qN≥2。
(3)
各剰余は d の倍数である。上の等式をすべて d で割ると、商 qk は変わらず、正の剰余が 0 になる段階も変わらない。したがって N(a/d,b/d)=N(a,b)。
(4)
rk+1≤rk/2 なら次々の剰余も rk/2 以下である。rk+1>rk/2 の場合、rk を rk+1 で割る商は 1 だから
rk+2=rk−rk+1<rk/2.
従って二回ごとに剰余は少なくとも半分になる。r1=b から正の整数の剰余を保てる回数は O(1+logb) であり、b≥2 では N(a,b)=O(logb)。b=1 では一回で終了する。