• 締切済み

数論の範囲に入ると思われる事柄で質問があります。

数論の範囲に入ると思われる事柄で質問があります。 18n mod(31)≡1  -式(1) この方程式は n mod(31)≡19  -式(2) のときに満たされますが、 この19を求めるときに、 m:0→30まで試す力技ではなくて、 スマートに説く方法はありますでしょうか? さらに言えば、もっと一般的に A×n mod(B)≡C  -式(1) でA,B,Cが与えられてる場合にnを求める方法を知りたいです。

みんなの回答

  • Mr_Holland
  • ベストアンサー率56% (890/1576)
回答No.2

 合同式を使って求める方法もあります。  (ただしスマートとはいえませんが。)  式(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を求める方法を知りたいです。  上記のように両辺の入れ替えを行って、法とする数を小さくしていくことになると思います。  とてもスマートとは言い難いですが。

ys540122
質問者

お礼

ax + by =q を控除方で解くのと同じようなルーティンで解けるのですね。 ありがとうございました。 31程度大きさの法であっても 数論の高等な知識があれば、 式を見た瞬間にわかるというものでは無いのですね

  • banakona
  • ベストアンサー率45% (222/489)
回答No.1

あまりスマートとは言えませんが、一般的にはユークリッドの互除法を使います。 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 

ys540122
質問者

お礼

解答ありがとうございます。 一般的な方法があるのですね。 コーディングして計算させる関数を簡単に作りたいのが目的なので助かりました。

関連するQ&A