・アレクサンダー整数                   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の増加とともに傾きもだんだん増加する傾向があるように見えるが...。


                                            投稿一覧に戻る