カプレカ数とその周辺
愛知教育大学のサーバ
sakuraのサーバ
愛知教育大学 数学教育講座 飯島康之
第一段階
- カプレカ操作の具体例:
- たとえば,231にカプレカ操作をすると,321 - 123 = 198 になります。
- 1桁の数はカプレカ操作をすると,すべて同じ数になりますね。
- 2桁の数はカプレカ操作を数回繰り返すと...どうなりますか?
- 3桁までは,手計算で実感する方がおもしろいです。
- まず,そこまででどんなことに気づくかを楽しんでみてください。
第二段階
- でも,4桁以上になると,手で計算するには大変なので,...プログラミングしてみたいとか,プログラムを使ってみたいと思うでしょう。
- そして,調べてみると,奥が深いことを実感すると思います。
- 「ソフトの改良」をどうするといいのか,そして,それを使うと,どういう数学的発見につながっていくのか。そんなことを楽しんでください。
- まず最初の段階としては,「カプレカ操作」をプログラムとして表現してみることです。
- 簡単そうですが,意外に面倒です。
- 文字として入力されたそれぞれの桁の数値を分解し,その大小を使って並び替え,そして引き算をする。
- 「どんな桁数」でも対応できるようにしたい。(桁数に制限ないようにしたいなら,Pythonを使いましょう。ここで使っているJavaScriptには限界があります。)
- それは,「ちょっと上の段階のプログラミング」です。
- また,ここでは調べやすいように,上のテキストエリアにカンマ区切りで入力したそれぞれの数に対して,結果を表示するようにしてみました。これも,初心者段階ではあまりやらないことかもしれません。
カプレカ操作でできる数列を調べる(その1)
初期値を表示しない機能も追加
必要に応じて,これも使えるかも数値データの分析のために
- 上記を使うことで,どんな数学的な発見ができましたか?
- どんな「困ったこと」や「限界」などを発見しましたか?
- プログラムをどう改良したいと思いましたか?
第三段階
- 1桁と2桁では,「自明な解(0)しかありません」でした。
- 3桁で,「意味のある解」が見つかりました。
- 4桁では,その発展が見つかりました。
- でも,5桁で,困ったことが起こることを発見したい思います。
- 上記のプログラムでは,それを「目で確認」することはできます。
- でも,それを「明示する」ためには,どういう工夫が必要か
- また,このことがわかると,有限回の手続きで「おしまいになる」ことがわかります。つまり,カプレカ操作の回数の制限は「いらない」ことがわかります。
- たとえば,それを反映すると,次のようなものに到達することができるでしょう。
カプレカ操作でできる数列を調べる(その2)
- 上記を使うことで,どんな数学的な発見ができましたか?
- どんな「困ったこと」や「限界」などを発見しましたか?
- プログラムをどう改良したいと思いましたか?
- あるいは,プログラムの使い方をどう改良したいと思いましたか?
第四段階
- カプレカ数かどうかを判定する計算量は少ないです。それほど改良はできないでしょう。
- 一方,調べる対象をしぼるという方法は有効です。
- その具体的な方法は,ここではまだかかないことにしておきましょう。
第五段階
- JavaScriptには,「扱う整数の桁数のかべ」があります。
- これを乗り越えると,たとえば,すべて調べなくても「ラッキーに候補を見つければ検証」することができます。
- そのためには,任意の桁数に対応するような仕組みをつくるという方法と,Pythonのように,最初から任意の桁数の整数を扱える言語に切り換えるというのも一つの方法です。
任意の桁数(1)
任意の桁数(2)
任意の桁数(3)
第六段階
- カプレカ数がたくさん見つかってくると,そこに「パターン」を見いだすことができます。
- これまでの方法はかぎられた範囲に関してすべて調べるとか,効率的に調べるというものでしたが,パターンを見つけて,「それならうまくいく」のを検証するのは,とても短時間に行えます。
- あるいは,パターンが見つかれば,そこでの仕組みに注目して,証明することもできます。
- ただし,「すべてのカプレカ数」を列挙できるということは別ですが。
第七段階
- ホームページ上のJavaScriptで行う計算には,時間の制約があります。
- 一定時間反応がないと,ページの問題があるとみなして停止してしまうのです。
- その壁を乗り越えるには,たとえば,Pythonなど他の言語で記述するのも一つの手です。
第八段階
- 組織的な観察をすると,また,いろいろなきまりが見えてくることがあります。
- その中には,十進法を変えて他のn進法に変えても成り立つことなどもあります。
- この段階では,たくさんの場合を調査しなくても,計算で確認することも可能になるので,手計算や,次を使うことで検証可能になります。
任意の桁数をn進法にて(1)