その問題の解決策は、考えられるすべての解決策を計算するだけでは見つかりません。解は非常に大きいため、計算には数日 (場合によっては数年) かかります。
素数を使用して数字を書き留める、よりスマートなソリューションがあります。
与えられた例 (2520 は、1 から 10 までの数字で割り切れる最小の数字です) は、次のように書き留めることができます。
1 = 1 (can be skipped) = 2^0 * 3^0 * 5^0 * 7^0
2 = 2 (prime) = 2^1 * 3^0 * 5^0 * 7^0
3 = 3 (prime) = 2^0 * 3^1 * 5^0 * 7^0
4 = 2^2 = 2^2 * 3^0 * 5^0 * 7^0
5 = 5 (prime) = 2^0 * 3^0 * 5^1 * 7^0
6 = 2 * 3 = 2^1 * 3^1 * 5^0 * 7^0
7 = 7 (prime) = 2^0 * 3^0 * 5^0 * 7^1
8 = 2^3 = 2^3 * 3^0 * 5^0 * 7^0
9 = 3^2 = 2^0 * 3^2 * 5^0 * 7^0
10= 2 * 5 = 2^1 * 3^0 * 5^1 * 7^0
これらで割ることができる最小の数は、各素数で使用される最大累乗を使用して計算できます。
2^3 * 3^2 * 5^1 * 7^1 = 2520
1 から 20 までの数字で同じことを (手動でも) 実行できます。
最後のヒント:答えは 100.000.000 より大きいが 10 億より小さいので、効率的に計算すれば数分で計算できます。