・アレクサンダー整数 GAI 氏
次の式 A = p*q*r かつ、1/A = 1/p - 1/q - 1/r を満たす整数p、q、rが存在するとき、
正整数 A をアレクサンダー整数(Alexandrian integer)と呼ぶ。
例 630はアレクサンダー整数である。(p=5、q=7、r=18)
630は、6番目のアレクサンダー整数であり、6番目まで並べると、
6、42、120、156、420、630
となる。(→ 参考:「A147811」)
即ち、
6=1*2*3 、1/6=1/1-1/2-1/3
42=2*3*7 、1/42=1/2-1/3-1/7
120=3*5*8 、1/120=1/3-1/5-1/8
156=3*4*13 、1/156=1/3-1/4-1/13
420=4*5*21 、1/420=1/4-1/5-1/21
630=5*7*18 、1/630=1/5-1/7-1/18
そこで、100番目のアレクサンダー整数を求めよ。また、これがどんな3つのエジプト分数
で表せるか。
らすかるさんからのコメントです。(平成25年12月23日付け)
同じような問題がここにありましたが、こちらは100番目ではなく150000番目ですね。
150000番目が求められるなら、きっと100番目はたやすいのでしょうね。
「A147811」の続きを自力で求められたのでしたら、そこに投稿すれば名前が載りますよ。
GAI さんからのコメントです。(平成25年12月23日付け)
ここの問題に挑戦してみようとやり始めたのですが、求められているのがなんと150000番
目という途方もない彼方の数。ここに載ってない40番目から、せめて100番目までと探索し
ていきました。プログラムをあれこれいじり直しながら(2つのプログラムを組合せて進めま
した。)
やっと100番目に相当するであろう次のアレキサンダー整数に行き着きました。
1195116=47*52*489 ; 1/1195116=1/47-1/52-1/489
でもこれが正解なのか確認がわからないので、らすかるさんのご足労をお願いしたいと出題
しました。
らすかるさんからのコメントです。(平成25年12月24日付け)
プログラムを作って確かめたところ、100番目は「1195116」で合ってました。ついでに、
150000番目の「1884161251122450」も確認して、100万番目は「533250036187491210」であ
ることも計算しました。
150000番目は適当な数行のプログラムでも数分で出ましたが、100万番目の計算に時間が
かかって返事が遅くなりました(笑)
GAI さんからのコメントです。(平成25年12月24日付け)
100万番目:53京3250億・・・!!!とんでもない数まで調査されるなんて、どんなプログラム
なんですか。開いた口が塞がりません。
この3つにわけたp、q、rにはすごい法則があるんですね。100個のもので確認しました。
n : p , q , r → d=q-p , r=p+(p2+1)/d ----------------------------------------------- 6 : 1 , 2 , 3 → 1 , 3 42 : 2 , 3 , 7 → 1 , 7 120 : 3 , 5 , 8 → 2 , 8 156 : 3 , 4 , 13 → 1 , 13 420 : 4 , 5 , 21 → 1 , 21 630 : 5 , 7 , 18 → 2 , 18 930 : 5 , 6 , 31 → 1 , 31 1428 : 7 , 12 , 17 → 5 , 17 1806 : 6 , 7 , 43 → 1 , 43 2016 : 7 , 9 , 32 → 2 , 32 2184 : 8 , 13 , 21 → 5 , 21 3192 : 7 , 8 , 57 → 1 , 57 4950 : 9 , 11 , 50 → 2 , 50 5256 : 8 , 9 , 73 → 1 , 73 8190 : 9 , 10 , 91 → 1 , 91 8364 : 12 , 17 , 41 → 5 , 41 8970 : 13 , 23 , 30 → 10 , 30 10296 : 11 , 13 , 72 → 2 , 72 10998 : 13 , 18 , 47 → 5 , 47 12210 : 10 , 11 , 111 → 1 , 111 17556 : 11 , 12 , 133 → 1 , 133 19110 : 13 , 15 , 98 → 2 , 98 21114 : 17 , 27 , 46 → 10 , 46 23994 : 18 , 31 , 43 → 13 , 43 24492 : 12 , 13 , 157 → 1 , 157 28050 : 17 , 22 , 75 → 5 , 75 32640 : 15 , 17 , 128 → 2 , 128 33306 : 13 , 14 , 183 → 1 , 183 34362 : 18 , 23 , 83 → 5 , 83 37506 : 21 , 38 , 47 → 17 , 47 39270 : 21 , 34 , 55 → 13 , 55 44310 : 14 , 15 , 211 → 1 , 211 52326 : 17 , 19 , 162 → 2 , 162 57684 : 23 , 33 , 76 → 10 , 76 57840 : 15 , 16 , 241 → 1 , 241 70686 : 22 , 27 , 119 → 5 , 119 74256 : 16 , 17 , 273 → 1 , 273 79800 : 19 , 21 , 200 → 2 , 200 83076 : 23 , 28 , 129 → 5 , 129 93942 : 17 , 18 , 307 → 1 , 307 99900 : 27 , 37 , 100 → 10 , 100 116886 : 21 , 23 , 242 → 2 , 242 117030 : 30 , 47 , 83 → 17 , 83 117306 : 18 , 19 , 343 → 1 , 343 120156 : 31 , 57 , 68 → 26 , 68 133152 : 32 , 57 , 73 → 25 , 73 143220 : 31 , 44 , 105 → 13 , 105 144780 : 19 , 20 , 381 → 1 , 381 149472 : 27 , 32 , 173 → 5 , 173 165600 : 23 , 25 , 288 → 2 , 288 |
n : p , q , r → d=q-p , r=p+(p2+1)/d ----------------------------------------------- 170940 : 28 , 33 , 185 → 5 , 185 176820 : 20 , 21 , 421 → 1 , 421 196554 : 34 , 47 , 123 → 13 , 123 201498 : 33 , 43 , 142 → 10 , 142 213906 : 21 , 22 , 463 → 1 , 463 228150 : 25 , 27 , 338 → 2 , 338 256542 : 22 , 23 , 507 → 1 , 507 257070 : 38 , 55 , 123 → 17 , 123 280608 : 32 , 37 , 237 → 5 , 237 284130 : 41 , 70 , 99 → 29 , 99 302586 : 37 , 47 , 174 → 10 , 174 305256 : 23 , 24 , 553 → 1 , 553 306936 : 27 , 29 , 392 → 2 , 392 314754 : 33 , 38 , 251 → 5 , 251 319920 : 43 , 80 , 93 → 37 , 93 342108 : 43 , 68 , 117 → 25 , 117 360600 : 24 , 25 , 601 → 1 , 601 404550 : 29 , 31 , 450 → 2 , 450 410550 : 46 , 75 , 119 → 29 , 119 423150 : 25 , 26 , 651 → 1 , 651 426384 : 47 , 81 , 112 → 34 , 112 452892 : 47 , 73 , 132 → 26 , 132 483294 : 37 , 42 , 311 → 5 , 311 484044 : 44 , 57 , 193 → 13 , 193 493506 : 26 , 27 , 703 → 1 , 703 505050 : 50 , 91 , 111 → 41 , 111 519612 : 43 , 53 , 228 → 10 , 228 523776 : 31 , 33 , 512 → 2 , 512 532416 : 47 , 64 , 177 → 17 , 177 534318 : 38 , 43 , 327 → 5 , 327 572292 : 27 , 28 , 757 → 1 , 757 611940 : 47 , 60 , 217 → 13 , 217 660156 : 28 , 29 , 813 → 1 , 813 667590 : 33 , 35 , 578 → 2 , 578 704880 : 55 , 89 , 144 → 34 , 144 717972 : 47 , 57 , 268 → 10 , 268 744078 : 57 , 107 , 122 → 50 , 122 757770 : 29 , 30 , 871 → 1 , 871 779730 : 42 , 47 , 395 → 5 , 395 839160 : 35 , 37 , 648 → 2 , 648 852432 : 43 , 48 , 413 → 5 , 413 861042 : 57 , 83 , 182 → 26 , 182 865830 : 30 , 31 , 931 → 1 , 931 874038 : 57 , 82 , 187 → 25 , 187 922680 : 55 , 72 , 233 → 17 , 233 985056 : 31 , 32 , 993 → 1 , 993 1041846 : 37 , 39 , 722 → 2 , 722 1115226 : 53 , 63 , 334 → 10 , 334 1116192 : 32 , 33 , 1057 → 1 , 1057 1195116 : 47 , 52 , 489 → 5 , 489 |
らすかるさんからのコメントです。(平成25年12月24日付け)
法則って、もしかして、「d=q-p , r=p+(p2+1)/d」のことですか?この式は、私が計算に使
った式そのものです。
例えば、100番目まで求める場合、100番目が「1195116」なので、[1195116^(1/3)]=106か
ら、pは、1〜106まで調べれば十分、qはp+1から2pまで調べれば十分なので、この範囲で、
(p2+1)/(q-p)が割り切れるものを探し、割り切れたら、それをrとして、p*q*rを出力するとい
うプログラムです。
もちろん、このままでは順不同ですので、出力結果をソートプログラムでソートします。そう
すると、100番目が確認できます。もちろん、100番目がわからない時はpの範囲もわかりま
せんが、まずは適当な範囲にして、出た結果の100番目の値からpを決めて再度実行すれ
ば、2回目は100番目の値が正しく得られます。
(最初に出た仮の100番目の値は、大きいことはあっても小さいことはないからです。)
但し、100番目程度なら多分大丈夫ですが、1000番目とか求めようとするとすぐに、p*q*r
がintの範囲を超えて変な結果になったりしますので、オーバーフローチェックを入れる必要
はあります。
例えば、int(符号付き32ビット)の範囲の1431個の解を得るプログラムは、以下のようにな
ります。
#include
<stdio.h>
int main(void){
int p, q, r;
for(p = 1; p <= 1289;
++p)
for(q = p + 1; q <= p + p; ++q)
if((p * q + 1) % (q - p) == 0
&&
(r = (p * q + 1) / (q - p)) <= 2147483647 / (p *
q))
printf("%10d\n", p * q * r);
return
0;
}
(出力結果をテキストファイルにして別プログラムでソートします)
(コメント) N番目のアレクサンダー整数をMとすると、(logN,logM)の分布は、ほぼ直線
になるらしい。
例えば、らすかるさんの計算結果から、
A(log100,log1195116)=(4.60517018598809,13.9937538097664)、
B(log150000,log1884161251122450)=(11.9183905730784,35.17225915717)、
C(log1000000,log533250036187491210)=(13.8155105579643,40.8177668201243)
このとき、線分ABの傾きは、2.89592056938268・・・
線分BCの傾きは、2.97583057894667・・・
線分ACの傾きは、2.91238020822486・・・
Nの増加とともに傾きもだんだん増加する傾向があるように見えるが...。