- 締切済み
数論の範囲に入ると思われる事柄で質問があります。
数論の範囲に入ると思われる事柄で質問があります。 18n mod(31)≡1 -式(1) この方程式は n mod(31)≡19 -式(2) のときに満たされますが、 この19を求めるときに、 m:0→30まで試す力技ではなくて、 スマートに説く方法はありますでしょうか? さらに言えば、もっと一般的に A×n mod(B)≡C -式(1) でA,B,Cが与えられてる場合にnを求める方法を知りたいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Mr_Holland
- ベストアンサー率56% (890/1576)
合同式を使って求める方法もあります。 (ただしスマートとはいえませんが。) 式(1)から 18n=31m+1 ・・・・(3) ⇔31m=18n-1 31m≡-1 mod(18) 13m≡-1 mod(18) ∴13m=18n'-1 ・・・・(4) ⇔18n'=13m+1 18n'≡1 mod(13) 5n'≡1 mod(13) ∴5n'=13m'+1 ・・・・(5) ⇔13m'=5n'-1 13m'≡-1 mod(5) 3m'≡-1 mod(5) ∴3m'=5n''-1 ∴n''=3k+2, m'=5k+3 式(5)に代入して、 5n'=13m'+1=13(5k+3)+1=65k+40 ∴n'=13k+8 式(4)に代入して、 13m=18n'-1=18(13k+8)-1=234k+143 ∴m=18k+11 式(3)に代入して、 18n=31m+1=31(18k+11)+1=558k+342 ∴n=31k+19 ∴n mod(31)≡19 >さらに言えば、もっと一般的に A×n mod(B)≡C -式(1) でA,B,Cが与えられてる場合にnを求める方法を知りたいです。 上記のように両辺の入れ替えを行って、法とする数を小さくしていくことになると思います。 とてもスマートとは言い難いですが。
- banakona
- ベストアンサー率45% (222/489)
あまりスマートとは言えませんが、一般的にはユークリッドの互除法を使います。 31を18で割って 1あまり13 31=18・1+13 A 18を13で割って 1あまり5 18=13・1+5 B 13を5で割って 2あまり3 13=5・2+3 C 5を3で割って 1あまり2 5=3・1+2 D 3を2で割って 1あまり1 3=2・1+1 E Eを変形して 1=3-2・1 Dを使って2を消去して =3-(5-3・1)・1=3-5 Cを使って3を消去して =(13-5・2)・2-5=13・2-5・5 Bを使って5を消去して =13・2-(18-3・1)・5=13・7-18・5 Aを使って13を消去して =(31-18・1)・7-18・5=31・7-18・12 つまり 1=31・7-18・12 となるので、n≡-12 であることが分かり、-12≡19(mod31)なので n=19
お礼
解答ありがとうございます。 一般的な方法があるのですね。 コーディングして計算させる関数を簡単に作りたいのが目的なので助かりました。
お礼
ax + by =q を控除方で解くのと同じようなルーティンで解けるのですね。 ありがとうございました。 31程度大きさの法であっても 数論の高等な知識があれば、 式を見た瞬間にわかるというものでは無いのですね