それぞれ4つの異なる素因数を持つ連続する4つの数を求めよという問題です。

nの素因数の数を計算し、4つだったらフラグを立てるそれが4回続いたら、おしまいというプログラムで計算できます。

 

上限がわかっているのなら、素数リストを作ったうえで、素因数の数のリストを求めるというやり方をすれば、計算時間も短く澄みます。例えば1億まで0を並べたリストを作り、2の倍数に1を加える、3の倍数に1を加える・・・と続けていけば素因数の数のリストが出来上がります。

4つなら、この方法が使えるのですが、

「それぞれ5つの異なる素因数を持つ連続する5つの数を求めよ」という問題にすると、1億までには見つかりませんでした。

1億を超えると、メモリが気になります。

そこで時間がかかることは承知の上で、最初に示した方法で計算してみます。

 

 

そうすると129963314が見つかりました。

129963314=2×13×37×53×2549

129963315=3×5×31×269×1039

129963316=2^2×7×97×109×439

129963317=11^2×17×23×41×67

129963318=2×3×89×199×1223

でした。

1億越えか・・・

ーーーーーーーーーーーーーーーーーーーーーーー

もっと速くする方法がないのか考えてみました。

4つの連続する数字なので、2つが偶数、2つは奇数です。そして4の倍数が必ず1個あります。

4の倍数が必ず存在するということは、4の倍数をベースに考えればよいということですね。

そこで、数列を4パターンに分けてみます。

① 4n-3, 4n-2,4n-1,4n

② 4n-2,4n-1,4n,4n+1

③ 4n-1,4n,4n+1,4n+2

④ 4n,4n+1,4n+2,4n+3

の4通りです。

この時nが奇数なら素因数の数は3、偶数なら4です。これ以外は不成立になります。

次に、2n-1の素因数の数が4にならなければ、①②は不成立です。

2n+1の素因数の数が4にならなければ③④は不成立です。

この状態で、残りの2つを調べれば調べる数そのものが格段に減ります。実際にやってみると3倍速以上にはなりそうです。

 

ーーーーーーーーーーーーーーーーーーーーーーー

 

「それぞれ4つの異なる素因数を持つ連続する6つの数を求めよ」ということで、やってみると見つかりました。

1217250 = 2 × 3^2 × 5^3 × 541

1217251 = 7 × 17 × 53 × 193

1217252 = 2^2 × 23 × 101 × 131

1217253 = 3 × 47 × 89 × 97

1217254= 2 × 19 × 103 × 311

1217255= 5 × 13 × 61 × 307 

 

この時7つ目1217256も4つの異なる素因数を持っていることがわかりました。

 

このあたりが限界か・・・

 

1710712055という数字が見つかりました。
ここから、5つの異なる素因数を持つ数字が6つ連続します。めちゃめちゃ時間がかかるので、このあたりがほんとに限界です。