・分身の術 GAI 氏
自然数nは、ただ一通りの素因数分解 n=p1α1・p2α2・・・prαr (pi:素数、r:自然数)
をもつ。
そこで、1/nを、上記のpiとαiを用いて、
1/n=a1(1/p1)α1+a2(1/p2)α2+・・・+ar(1/pr)αr (ai:整数)
とできぬものかと挑戦してみた。
1/6=1/2-1/3 、1/10=1/2-2*(1/5) 、1/12=1/3-(1/2)2 、1/30=1/2+1/3-4*(1/5)
1/90=1/2+(1/3)2-3*(1/5) 、1/210=1/2+1/3+3*(1/5)-10*(1/7) 、・・・・・
勿論、他の表現方法も存在できます。nが100までやりましたが(ちょとした頭の体操には
なる)、必ず書き直しができることを保証してくれるみたいです。(どなたか証明を願う。)
そこで、1/75600 に挑戦して下さい。
これを何かに応用できぬものかと(指数に対する対数の様に積を和に切り替える発想)思
案していますが、未だに具体例に到りません。もし利用方法がありましたらお知らせ下さい。
らすかるさんからのコメントです。(平成26年12月24日付け)
(きちんと検討したわけではありませんが)a1〜ar は、|ai|<piαi という条件を付けられ
るのでは?
1/90まではいいですが、1/210=1/2+1/3-2*(1/5)-3*(1/7) の方が綺麗じゃないですかね?
1/75600を適当に考えてみると、75600=2^4*3^3*5^2*7なので、互いに素な近い2約数の積
にすると、75600=(3^3*7)×(2^4*5^2)=189×400
1/75600=a/189+b/400 とおいて整理すると、 1=400a+189b
ユークリッドの互除法により、 (a,b)=(43,-91) という解が見つかるので、
1/75600=43/189-91/400
43/189=c/27+d/7 とおいて同様に解くと、一つの解は、 (c,d)=(10,-1) なので、
43/189=10/27-1/7
91/400=e/16+f/25 とおいて同様に解くと、一つの解は、 (e,f)=(3,1) なので、
91/400=3/16+1/25
よって、1/75600=43/189-91/400=(10/27-1/7)-(3/16+1/25)=-3/2^4+10/3^3-1/5^2-1/7
GAI さんからのコメントです。(平成26年12月24日付け)
なるほどですね。この条件を入れずに探していたら、山ほど存在できるので面白みにかけ
るなと思っていましたが、これを含むことである程度簡潔に表す形態ができました。
プログラムを組んで、n=200〜300に対する結果を得ました。(但し、p1<p2<・・・<pr)
らすかるさんからのコメントです。(平成26年12月24日付け)
素因数がn種類あるとき、nC[n/2]通りになりそうですね。
「210」は、(a,b,c,d)=(1,-2,3,-3)が抜けています。
らすかるさんからのコメントです。(平成26年12月25日付け)
「素因数がn種類あるとき、nC[n/2]通りになりそうですね。」は撤回します。1/75600は素因
数が4種類ですが、4C2通りではなく、4C1通りになりますね。
素因数が2種類のとき、2通り(正・負一つずつのためどちらが正かで2通り)
素因数が3種類のとき、3通り(正・負のどちらかが一つのため3C1通り)
というのは間違いないと思いますが、
素因数が4種類以上の場合は、nCk通り(1≦k≦n/2)としか言えないですね。
1/210の場合は正・負二つずつなのでどの二つを正にするかで4C2通り、1/75600の場合
は正が一つしかないのでどれを正にするかで4C1通りです。
GAIさんの結果について、1/200=-7/2^3+22/5^2=1/2^3-3/5^2 ですが、1/2^3-3/5^2 は
-7/2^3 に1を足して 22/5^2 から1を引いたものですね。
1/210も同様に、|ai|<piαi という条件から外れないように正の項から1を引いて負の項に
1を足せば他の解が得られます。
このままでは複数の解が出てきて形式を統一しにくいですが、先頭に自然数を追加して残
りの項を全て負にして、「1/200=1-7/2^3-3/5^2」のような形式にすれば、唯一解に統一でき
ます。上記の形式では、
1/200=1-7/2^3-3/5^2 、1/201=1-2/3-22/67 、1/202=1-1/2-50/101 、1/203=1-6/7-4/29
1/204=1-1/2^2-1/3-7/17、1/205=1-4/5-8/41、1/206=1-1/2-51/103、1/207=1-7/3^2-5/23
1/208=1-11/2^4-4/13 、1/209=1-4/11-12/19 、1/210=2-1/2-2/3-2/5-3/7
のようになります。
# 素因数が多くなると先頭が1でない値になることがあります。この形式では、
1/75600=1-3/2^4-17/3^3-1/5^2-1/7 となります。
GAI さんからのコメントです。(平成26年12月27日付け)
素因数分解の如く、ただ一つの分解にできるなんて、とっても面白いです。自然数nを1000
までの範囲で調査してみました。
GAI さんからのコメントです。(平成26年12月29日付け)
やっと一日かけて具体的に書き表せるプログラムを作ったのでアップしてみます。(投稿条
件から可能な所までになります。)らすかるさんも指摘されているように、予めどんな自然数か
ら引けば一意の分解が可能なのかが判然としないので、この部分をプログラムでどの様に
組み上げればいいのかに苦心しました。
何度も何度も修正を繰り返して(,と;の微妙な違いと括弧をどこで閉じるかで結果が異なる)、
全ての1/n に対して完全に走った時は嬉しかったです。
今のところnが異なる4つの素因数を含むものまではnをいくら大きくしても表示可能です。
この原理を重ね合わせていけば更に異なる5,6,7・・・個の素因数を含んでいくものにも対応
可能です。
(ただし素人作りなので、プログラム行数がとんでもない長さになりそうですが・・・)
らすかるさんからのコメントです。(平成26年12月30日付け)
私も同じ結果を出力するプログラムを作ってみましたが、全く同じ結果になりました。
私が作ったプログラムのアルゴリズムは以下のようになっています。
・引き算する分数の分母は、2から順に割り切れるものを探し、割り切れたら同じ数で割れる
だけ割る(pi^αiを得る)
・分母が一つ見つかったら、それをdとして、元の分数に1/dを、結果の分母がpiで割り切れ
なくなるまで足す
・上記を繰り返すが、加算結果が整数になったら終わり、また、試し割り数の2乗が結果の分
数の分母を超えたら終わり(ただしこの場合、最後の素因数が残っているので、その処理
は必要)
具体例(n=84の場合)
最初の分数は、1/84
・84は2で割り切れるので2で割れるだけ割ると、2^2=4 という因数が得られる。
・1/84+1/4=11/42 → 42は2で割り切れるので継続
1/84+2/4=43/84 → 84は2で割り切れるので継続
1/84+3/4=16/21 → 21は2で割り切れないので終了、最初の結果は3/4
次の分数は16/21
・21は3で割り切れる。
・16/21+1/3=23/21 → 21は3で割り切れるので継続
16/21+2/3=10/7 → 7は3で割り切れないので終了、次の結果は2/3
次の分数は10/7
・次の試し割りは4だが、4^2>7なのでここで終了。
残った10/7は7-(10を7で割った余り)=4から4/7を足せば整数の2になるから、
式は2-3/4-2/3-4/7
# 分数を記録するバッファを10個もとっておけば、intの範囲の数には十分です。
# 最初の自然数は自動的に算出されます。
# 素因数が増えてもプログラムは変わりません。
# プログラムの行数は(C言語ですが)80行ぐらいです。
GAI さんからのコメントです。(平成26年12月30日付け)
ハァー、このアルゴリズムで走るんですか。まさに、分数形のユークリッド互除法ですね。
これだとnがどんなに大きくても、いかに異なる素因数を多く含んでいても繰り返しの作業で
処理していってくれますね。
この問題を考える切っ掛けとなったのが、最近Eテレで4回に分けて放映されていたオック
スフォード大学の数学者マーカス・ソートイ教授の講演の対称性の話題の中で、正15角形
を1/15だけ回転させても元の形に変化が起こらないが、これはまた正5角形を2/5回転させ、
その後正3角形を1/3だけ逆回転させても同じになる。
<1/15=2/5-1/3を視覚的に理解させる視点をあたえた。>
この話に興味が涌き、対称性にはその原子とも呼べる動きを組み合わせることでいろいろ
な保存性を理解できるのではないかと思ったことが動機でした。
今回こうしてあらゆる分数がその素因数分解の素材で唯一分解可能であることが判明した
ので、この結果はきっと他の現象を違う面で理解できる材料になるものと確信しております。
また、独学ながらもプログラムの精進にも勉めます。いろいろな面での示唆ありがとうござ
いました。
DD++さんからのコメントです。(平成26年12月30日付け)
GAIさんの1日の頑張りを無為にするようでなんなんですが、これって以下であっさり終わる
話なような...。
例:75600 の場合
75600 = 24・33・52・7 と素因数分解しておいて、
33・52・7 = 4725 で、4725a ≡ -1 (mod 24) かつ 0<a<24 を解いて、a=3
24・52・7 = 2800 で、2800b ≡ -1 (mod 33) かつ 0<b<33 を解いて、b=17
24・33・7 = 3024 で、3024c ≡ -1 (mod 52) かつ 0<c<52 を解いて、c=1
24・33・52 = 10800 で、10800d ≡ -1 (mod 7) かつ 0<d<7 を解いて、d=1
これらから、1/75600 + 3/16 + 17/27 + 1/25 + 1/7 を計算してみると 1 になるので、
1/75600 = 1 - 3/16 - 17/27 - 1/25 - 1/7