問題1 足し算するとちょうど60になる素数の組み合わせを出力するプログラムを作成せよ。
問題2 足し算するとちょうど60になるような10個以上の素数の組み合わせを出力するプログラムを作成せよ。
上記2問とも重複ありです。(例41,3,2,2,2,2,2,2,2,2など)
私は先に60までの素数をリストに格納して、それらを使って合計60になるような組み合わせを探そうとしました。しかし、私の作ったプログラムはとてつもない計算量になってしまい、実行できません。そもそもの考え方が間違っているのか、もっと効率よくリスト内の値を計算する方法があるのか分かる方教えて下さい。
python
limit = 60 list = [] list_1 = [] for i in range(2, limit): for j in range(2, i): if i % j == 0: break else: list.append(i) for k in(list): a = int(60/k) for l in range(a): list_1.append(k) def get_integral_value_combination(list, target): def a(idx, l, r, t): if t == sum(l): r.append(l) elif t < sum(l): return for u in range(idx, len(list)): a((u + 1), l + [list[u]], r, t) return r return a(0, [], [], target) print(get_integral_value_combination(list_1, 60))
まだ回答がついていません
会員登録して回答してみよう