ユークリッド虚2次体における 最大公約数の計算 (1 - ω)-ary GCD Algorithm in Z[ω] Fujikula Yohei (2007/02/09) 内容 > 虚2次体 R(√-3) の整数 Z[ω] にお ける最大公約数の計算 > ユークリッド互除法の適用と結果 整数 Z[ω] > Z[ω] = { x + yω|x,y∈Z } , ω = (-1+√ ) /-32 3ω 2ω ω O 1 2 3 ノルム ― > N( x + yω) = ( x + yω)(x + yω) = x 2 + y2 - xy α = x+yω yω O Oα 2= N(α) x 約数・倍数 >約数・倍数 α=β・γ ( α, β, γ∈Z[ω] ) >最大公約数(GCD) 公約数の中でノルムが最大のもの 単数・同伴数 >単数 すべての整数の約数となるもの 2 Z[ω] では, ±1, ±ω, ±ω >同伴数 整数 αに対して ±α, ±αω, ±αω 2 同伴数 >整数αは同伴な数をすべて約数にもつ ω -αω 2 αω α -α -αω αω 2 ユークリッドの互除法 GCD algorithm > a = bq + r のとき(すべて整数) a, b の公約数 と b, r の公約数は等しい. >gcd(a, b) = gcd(b, r1) = gcd(r1 , r2) = ・・・ = gcd(rn , 0) = r n Z[ω] で使うには・・・ >α, β∈Z[ω] α = βγ + δ N(β) > N(δ) となる γ, δ∈Z[ω] が必ず存在する. 証明 α = βγ + δ N(β) > N(δ) >N((α/β) - γ) < 1 N((α- βγ) / β) < 1 N(α- βγ) < N(β) δ = α- βγ α/β γ ユークリッドの互除法 binary GCD algorithm >binary GCD algorithm in Z input: a, b a ← a / 2 k(a),b ← b / 2 k(b) k = min{ k(a), k(b) } while a ≠ b k(a-b) exchange larger of a,b with (a – b) / 2 output 2 k a k(x): x を 2 で割ることができる回数 実験(有理整数 Z のcase) 秒 0.06 0.05 0.04 0.03 0.02 0.01 0 original binary 100 500 1000 1500 2000 桁数 >大きな桁数の計算で有意な結果が得られる. Z[ω] での適用のポイント >binary GCD algorithm in Z ① 2 に対応するもの input: a, b ②α – βを確実 a ← a / 2 k(a),b ← b / 2 k(b) k = min{ k(a), k(b) } に小さくできるか while a ≠ b exchange larger of a,b with (a – b) / 2 k(a-b) output 2k a Z[ω] での適用のポイント >① 2 に対応するもの → (1 – ω) を選ぶ α = a + bω α / (1 - ω) = {(2a - b) / 3} + {(a + b) / 3}ω Z[ω] での適用のポイント >②α-βを確実に小さくできるか gcd(1 - ω, α) = 1 2 2 3 = (1 – ω) (- ω ) から gcd( 3, α) = 1 α ≡ 1 (mod 3) 実験(整数 Z[ω] のcase) 秒 6 5 4 3 2 1 0 original binary 100 500 1000 1500 2000 桁数 まとめ >Z[ω] においてもユークリッドの互除 法, binary GCD algorithm が適用 することができる.
© Copyright 2025 ExpyDoc