回答編集履歴
1
誤字の修正
answer
CHANGED
@@ -10,9 +10,9 @@
|
|
10
10
|
|
11
11
|
ということで、無条件で`2`が数列の中に追加できます。`N`個求めるという話でしたが、実際は`3`以上からなる`N-1`個の数列を見つければいいと言うことになります。これで、一個だけ最大が緩和されました。**と言いたいところですが、これは使っても使わなくてもどっちでも良いです。**それより次の方法がなかなか高速であるため、1個ぐらい多くても問題ないからです。
|
12
12
|
|
13
|
-
では、`2`以外の数を考えていきましょう。`2`の時は必ず偶数になるという組合せを考えた物でした。同じように、必ずある数の倍数になる組合せというのはあるのでしょうか?たとえば、`[3, 5, 7, 11, 13]`は3の倍数です。このとき`3`で割った余りを見てみましょう。`[0, 2, 1, 2, 1]`となりますが、これの合計も`3`の倍数です。そうです、合計がある数`X`の倍数にあるということは、`X`でそれぞれを割った余りの合計も`X`の倍数になると言うことです。しかし、`3`の場合は組合せが複雑なので、うまく求められません。では、`5`の場合は?`[1, 1, 1, 1, 1]`の合計は`5`です。きづきましたか?`5`で割った余りが`1`になる数を5つ集めれば必ず`5`になります。もしそういう数が大量にあっても、どの5個を集めても余りの合計は`5`になりますので、その数同士の和も`5`の倍数です。つまり、単純に`5`で割った余りが`1`になる数を探せば、その数同士の組合せは必ず`5`の倍数、合成数になると言うことに
|
13
|
+
では、`2`以外の数を考えていきましょう。`2`の時は必ず偶数になるという組合せを考えた物でした。同じように、必ずある数の倍数になる組合せというのはあるのでしょうか?たとえば、`[3, 5, 7, 11, 13]`は3の倍数です。このとき`3`で割った余りを見てみましょう。`[0, 2, 1, 2, 1]`となりますが、これの合計も`3`の倍数です。そうです、合計がある数`X`の倍数にあるということは、`X`でそれぞれを割った余りの合計も`X`の倍数になると言うことです。しかし、`3`の場合は組合せが複雑なので、うまく求められません。では、`5`の場合は?`[1, 1, 1, 1, 1]`の合計は`5`です。きづきましたか?`5`で割った余りが`1`になる数を5つ集めれば必ず`5`になります。もしそういう数が大量にあっても、どの5個を集めても余りの合計は`5`になりますので、その数同士の和も`5`の倍数です。つまり、単純に`5`で割った余りが`1`になる数を探せば、その数同士の組合せは必ず`5`の倍数、合成数になると言うことになります。
|
14
14
|
|
15
|
-
|
15
|
+
もうおわかりですね。`5`で割った余りが`1`になる素数を単純に探していけばいいと言うことです。懸念すべきは、その素数が上限である`55555`を越えないと言うことです。ご安心ください。`55555`以下で条件を満たす素数は**1408**個もあります。この1408個の素数から、適当に`N`個取り出せば、任意の5個の和が合成数(5の倍数)になる数列ができあがると言うことです。
|
16
16
|
|
17
17
|
後は簡単ですね。`5`で割った余りが`1`になる素数を`N`個探して、それを表示するだけです。
|
18
18
|
|