teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

元ソースの修正による解を例示

2022/04/28 20:54

投稿

actorbug
actorbug

スコア2479

answer CHANGED
@@ -6,6 +6,29 @@
6
6
  これだと、`l`の長さに比例する時間が毎回かかってしまいます。
7
7
  `l`に追加した数字の分だけ`t`を減らせばよいのだから、毎回合計を計算する必要はありません。
8
8
 
9
- 法については以前同じような質問回答してるので、リンクを貼っておきます
9
+ とりあえず、最初の問題だけ決すれば動作するようにはります。(他にいろいろ問題が残ってますが)
10
+ ```python
11
+ limit = 60
12
+ list = []
13
+ for i in range(2, limit):
14
+ for j in range(2, i):
15
+ if i % j == 0:
16
+ break
17
+ else:
18
+ list.append(i)
10
19
 
20
+ def get_integral_value_combination(list, target):
21
+ def a(idx, l, r, t):
22
+ if t == sum(l): r.append(l)
23
+ elif t < sum(l): return
24
+ for u in range(idx, len(list)):
25
+ a(u, l + [list[u]], r, t)
26
+ return r
27
+ return a(0, [], [], target)
28
+
29
+ print(get_integral_value_combination(list, 60))
30
+ ```
31
+
32
+ 他の解法については、以前同じような質問に回答しているので、リンクを貼っておきます。
33
+
11
34
  https://teratail.com/questions/360119#reply-490932