トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

Problem88 積和数

問題

少なくとも2つの自然数 {a1, a2, ... , aK} の集合の和かつ積として表せる自然数Nを積和数と呼ぶ.
N = a1 + a2 + ・・・ + ak = a1 × a2 × ・・・ × aK

例えば, 6 = 1 + 2 + 3 = 1 × 2 × 3.

ある集合の大きさ K に対して,この性質を持つ最小の N を最小積和数と呼ぼう.
集合の大きさ K = 2, 3, 4, 5, 6 に対する最小積和数は次のとおりである.

K=2:  4 = 2 × 2 = 2 + 2
K=3:  6 = 1 × 2 × 3 = 1 + 2 + 3
K=4:  8 = 1 × 1 × 2 × 4 = 1 + 1 + 2 + 4
K=5:  8 = 1 × 1 × 2 × 2 × 2 = 1 + 1 + 2 + 2 + 2
K=6: 12 = 1 × 1 × 1 × 1 × 2 × 6 = 1 + 1 + 1 + 1 + 2 + 6

したがって 2 <= K <= 6 に対して,全ての最小積和数の和は 4+6+8+12 = 30 である.
8 は和に一度だけカウントされていることに気をつけよう.

実際, 2 <= K <= 12 に対する最小積和数の完全な集合は {4, 6, 8, 12, 15, 16} なので,その和は 61 である.

2 <= K <= 12000 に対する全ての最小積和数の和は何か?


ソース



実行結果



解説