人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Mathematica で整数パズルを解く方法

某パズルサイトの問題なのですが、「ある整数 a を 17 乗して 3569 で割った余りが 915 である。a の値はいくつか」というような整数の問題を、Mathematica を使って小さい順に5つ解を表示させたいのですが、どのようにすればよいでしょうか。また、Mathematica でこのような整数の問題の解き方が解説されているホームページや書籍などはありますでしょうか?
(プログラムで総当たり計算させると、正解は 2015, 5581, 9150, 12719, 16288 となっているようです)


●質問者: 匿名質問者
●カテゴリ:科学・統計資料
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

質問者から

訂正ですが、初めの解は 2015 ではなく 2012 でした。


1 ● 匿名回答1号

http://www.wolframalpha.com/input/?i=%283569n%2B915%29%3Dm**17

Wolfram Alphaで
(3569n+915)=m**17
と入力すると、m=2012+3569*整数、と出てきました。


匿名質問者さんのコメント
解答ありがとうございます。Alpha は便利ですよね。Alpha に入力すればこんなに簡単に答を出してくれるのは知りませんでした。 一方で、答が欲しいというよりも、Mathematica でパラメータに正の整数という制限を書けて整数の範囲で問題を解かせる方法、剰余を上手く表現する方法などが知りたい感じなのですが、何かアイデアはありませんでしょうか?

2 ● 匿名回答1号
ベストアンサー

Reduce[Mod[n^17,3569]==915,n,Integer]
かな?


匿名質問者さんのコメント
解答ありがとうございます。Mod を式に入れたまま解く方法ってあったんですね。Solve 等で試していましたが、Reduce 関数で Mod を使う、ってことができたんですね。参考になります。(ちなみに、Integer は Integers のようでした)

3 ● 匿名回答2号

こちらは参考になるでしょうか。
>n≧0 and a=3569n+2012 and n 属する Z
http://www.wolframalpha.com/input/?i=Solve%5Ba%5E17+mod+3569+%3D%3D+915%2Ca%3E0%2C%7Ba%7D%5D
※参考URL
●Mathematica 入門
http://bach.istc.kobe-u.ac.jp/mma/nyumon/


匿名質問者さんのコメント
書き込みありがとうございます。Alpha、本当に便利ですよね。数学を解く専門の Siri みたいな感じで、結構みんな利用されているんですね。URL も参考にさせていただきます。

4 ● 匿名回答1号

できた!
Powermod[915,1/17,3569]

http://en.wikipedia.org/wiki/Modular_multiplicative_inverse


匿名質問者さんのコメント
書き込みありがとうございます。なるほど、「モジュラ逆数」という数学の理論を使えば、PowerMod 関数を使ってすぐに値が出るわけですね。これは頭のいい綺麗な解法ですね!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ