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

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。