
No.1ベストアンサー
- 回答日時:
ここで言う逆元とは、おそらく「乗法の」逆元のことですね?
ご質問で出された例で言えば、
5y ≡ 1(mod 13)となるyを求めよ、という意味だと思います。
この場合なら逆元は8で、
5×8 = 40 = 13×3 + 1 ≡ 1(mod 13)となっています。
すなわち、13p + 5q = 1となる整数p,qを
一組求めれば、そこから逆元は求まります。
いま、便宜的に「13×● + 5×▲」の形を
「基準形」と呼ぶことにします。
目標は「『1』を基準形に書き直す」ことになりますね。
これを行なうにあたってEuclid互除法がどのように役立つのか?
まず13と5に対し互除法を実行してみます。
13 ÷ 5 = 2 余り 3
5 ÷ 3 = 1 余り 2
3 ÷ 2 = 1 余り 1
というふうに、13と5は互いに素ですから、
「余りが1になる」まで行き着きます。
さて、上の式たちを「余り = ……」の形に書き換えると
(a) 3 = 13 - 5×2
(b) 2 = 5 - 3×1
(c) 1 = 3 - 2×1
となります。(a)を見ると、
「『3』が基準形に書き直されたもの」
と見ることができます。
すると、これを(b)に代入すれば
(b')2 = 5 - (13 - 5×2)×1 = 13×(-1) + 5×3
と、『2』も基準形に書き直されました。
さらに(a)と(b')を(c)に代入すれば
1 = (13 - 5×2) - [13×(-1) + 5×3]×1
= 13×2 + 5×(-5)
と、ついに『1』が基準形で表されたことになります。
以上より、5×(-5) ≡ 1(mod 13)
したがって「y = -5 + 13n」の形をしたものはすべて
5y ≡ 1(mod 13) を満たします。
n = 1とすれば逆元8が求まります。
もう1つだけ例題をやってみましょう。
「31を法とする12の乗法の逆元は?」
▼印は基準形で書かれた箇所です。
(解)互除法にて
31 = 12×2 + 7
12 = 7×1 + 5
7 = 5×1 + 2
5 = 2×2 + 1
すなわち
(a)7 = 31 - 12×2▼
(b)5 = 12 - 7×1
(c)2 = 7 - 5×1
(d)1 = 5 - 2×2
(a)を(b)に代入して
(b')5 = 12 - (31 - 12×2) = 31×(-1) + 12×3▼
(a)(b')を(c)に代入して
(c')2 = (31 - 12×2) - [31×(-1) + 12×3]×1 = 31×2 + 12×(-5)▼
(b')(c')を(d)に代入して
1 = [31×(-1) + 12×3] - [31×2 + 12×(-5)]×2 = 31×(-5) + 12×13▼
したがって12×13 ≡ 1(mod 31)すなわち逆元は13となります。
参考URL:http://www.nara-edu.ac.jp/~asait/c_program/sampl …
この回答への補足
丁寧な回答ありがとうございます。
ですが、僕の勉強不足でわからないところが多々ありますのでよろしければ教えてください。
まず、13p+5q=1となるものを求めれば、なぜ逆元が求まるのですか?
それと、2=5-(13-5*2)*1=13*(-1)+5*3の真ん中から右の式へはどのように考えるのですか?
No.4
- 回答日時:
自動処理については、機能的にはできると思いますが
私はよく知りません(ごめん(^^;)実はVBをあまり使ったことがないのです)。
「Do while(1)」と書くと「Loop」までを無限に繰り返します。
このプログラムでは
途中の「If ... Then GoTo Ext」で「:Ext」の位置に飛ぶことで
ループを抜け出しています。
Int(x)は「xを超えない最大の整数」です。
例えばInt(3.14) = 3、Int(-4,2) = -5となります。
No.3
- 回答日時:
ExcelのVBAのプログラムを示します。
セルA1に値を、B1に法を入れて走らせれば
C1に最大公約数が、D1に逆元が表示されます。
不当な値を入れた場合の処理は
盛り込んでいないので注意してください。
Sub Euclid()
a = Cells(1, 1): b = Cells(1, 2)
x = a: y = b: z = 1: w = 0
Do While (1)
q = Int(x / y)
r = x - q * y
If r = 0 Then GoTo Ext
x = y
y = r
tmp = z
z = w
w = tmp - q * w
Loop
Ext:
w = w - (Int(w / b)) * b
If w < 0 Then w = w + b
Cells(1, 3) = y
If y = 1 Then Cells(1, 4) = w Else Cells(1, 4) = "逆元なし"
End Sub
この回答への補足
Do while (1)とIntは、どういう意味なんですか?
あと、数値とか法の数とかを変えたときに勝手にマクロを実行するようにできますか?
No.2
- 回答日時:
「補足」を拝見しました。
分からないところがあれば何度でも聞いてください。
>13p+5q=1となるものを求めれば、なぜ逆元が求まるのですか?
逆元の定義はOKですか?
「自分と演算したら単位元になる相手」でしたね。
んでもって単位元とは
「誰と演算しても相手を変化させないヤツ」です。
modの世界では加法の単位元は0、乗法の単位元は1です。
したがって、「5の(mod 13)における乗法の逆元」といえば、
5×● ≡ 1(mod 13)、すなわち
[5×●] ÷ 13 = ■ 余り 1
となる●を求めればよい。
例えば、あてずっぽうに「●は7かな?」と試すと、
5 × 7 = 35
35 ÷ 13 = 2 余り 9
となって、余りが1にならないのでダメ(逆元でない)です。
これに対し「●は8だろうか」と試せば
5 × 8 = 40
40 ÷ 13 = 3 余り 1
となり、「ビンゴ!」です。
上の2式をまとめて書き直すと、
5×8 = 13×3 + 1
という形をしています。「13×3」を移項すれば
13×(-3) + 5×8 = 1
となり、右辺の「1」を左辺の「13p + 5q」の形に
書き換えたことになります。
だから、「1」を「基準形」に変形することが目標となるわけです。
>2=5-(13-5*2)*1=13*(-1)+5*3の真ん中から右の式へはどのように考えるのですか?
これは文字で書けば一目瞭然です。
数字のままだとどうしても計算してしまいたくなってしまいますよね(^^;)
そこをグッとこらえて、13と5は崩さずに変形しているのです。
なにせ「2」というシンプルな数を
わざわざ「13p + 5q」の形にしたいわけですから。
いま、13をs、5をtと書くことにして、
同じことをやり直してみます。
(a)3 = s - 2t
(b)2 = t - 3×1
(a)の「3」を(b)に代入すると
(b')2 = t - (s - 2t)×1 = -s + 3t
これを数字に戻すと
(b')2 = 13×(-1) + 5×3
となります。
この回答への補足
ありがとうございます。
わかりやすい説明で、すぐに理解することができました。
参考URLにC言語によるプログラムがあったんですけど、VBではないですか?
あと、EXCELでこれをするにはどうしたらいいですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 整数問題 Nを正の整数とする。 N+18がN+2の倍数となるようなNの値の個数を求めたい。 解説に、 1 2022/08/13 12:25
- C言語・C++・C# C#の問題で2つの整数a,bの最大公約数(GCD)を求めるユークリッドの互除法は,aをbで割った余り 2 2022/06/26 16:52
- 数学 ユークリッドの互除法、合同式の問題について 1 2022/05/08 11:49
- 数学 ユークリッドの互除法 添付についてですが、g(24337, 158)=g(158, 5)=1 という 2 2022/10/24 14:43
- 数学 写真は「ユークリッドの互除法」のイメージ図なのですが これで何故17が最大公約数になるのか分かりませ 2 2023/03/05 16:54
- 数学 再質問 写真は「ユークリッドの互除法」のイメージ図なのですが これで何故17が最大公約数になるのか分 4 2023/03/05 17:08
- 数学 最小公倍数と最大公約数の求め方で画像のような計算法があったのですが、理解できません。 なぜ2つ数24 4 2022/04/10 13:37
- その他(プログラミング・Web制作) 3Dモデルにおける法線の計算について(Python,OpenGL) 1 2023/04/25 23:46
- 数学 ユークリッド互除法なんですが最高公倍数が15なのは分かるんですけどrとsの解き方が分かりません。 教 4 2023/02/27 00:43
- 工学 対称分電圧について 1 2022/07/06 23:31
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「この2式の辺々を掛けて」とあ...
-
逆元の計算方法
-
整式P(x)をx²+x+1で割ると余...
-
数列について
-
数値代入法による恒等式の解説...
-
急ぎ目でお願いしますm(_ _)m ...
-
5x+7y=1の整数解を全て求めよ ...
-
代入法なのに、逆の確認をしな...
-
漸化式 an+bn√3=(2+√3)^n 自...
-
β-α=√Dになる途中の計算の意味...
-
等比数列について
-
複素関数 sin(x+iy)について
-
次のような連立方程式がある。
-
数学について
-
証明です
-
3つの連立方程式
-
数学の恒等式について質問です...
-
一次不定方程式の整数解のうち...
-
x^n-1を(x-1)^2で割った時の余り
-
微分方程式について
おすすめ情報