回答編集履歴

2

書き直した

2018/05/19 11:53

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1,3 +1,89 @@
1
+ こんなになっちゃいました。可能な組み合わせの和の中に素数が入っていたら再サンプリングしなおしてやり直し、入っていなければbreakしてその結果を出す・・・というロジックですね。
2
+
3
+
4
+
5
+ ```python
6
+
7
+ import random
8
+
9
+ import itertools
10
+
11
+
12
+
13
+ def is_prime(n):
14
+
15
+ for i in range(2, n):
16
+
17
+ if n%i == 0:
18
+
19
+ return False
20
+
21
+ return True
22
+
23
+
24
+
25
+ N = int(input())
26
+
27
+
28
+
29
+ primes_list100 = []
30
+
31
+ x = 0
32
+
33
+ for i in range(2,1000):
34
+
35
+ if is_prime(i):
36
+
37
+ primes_list100.append(i)
38
+
39
+ x += 1
40
+
41
+ if x >=100:
42
+
43
+ break
44
+
45
+
46
+
47
+ primes_list = random.sample(primes_list100,N)
48
+
49
+ while True:
50
+
51
+ prime_flag = False
52
+
53
+ for combi in itertools.combinations(primes_list,5):
54
+
55
+ combi_sum = sum(combi)
56
+
57
+ if is_prime(combi_sum):
58
+
59
+ prime_flag = True
60
+
61
+ break
62
+
63
+ if prime_flag:
64
+
65
+ primes_list = random.sample(primes_list100,N)
66
+
67
+ else:
68
+
69
+ break
70
+
71
+
72
+
73
+ print(' '.join(map(str, primes_list)))
74
+
75
+ ```
76
+
77
+
78
+
79
+ Nが大きくなると時間制約にひっかかると思います・・・。
80
+
81
+
82
+
83
+ ### よく読まないで書いてた回答
84
+
85
+ なんでこんなの書いたんだろう・・・。
86
+
1
87
  ```python
2
88
 
3
89
  for i in itertools.combinations(primes_list,5):
@@ -15,21 +101,3 @@
15
101
  primes_list = primes()
16
102
 
17
103
  ```
18
-
19
- ~~のelseのときにiが期待される結果になっている訳なので、そのままbreakして(外側のforのbreak)
20
-
21
- ~~
22
-
23
- ```python
24
-
25
- print(' '.join(map(str, i)))
26
-
27
- ```
28
-
29
-
30
-
31
- ~~でいけませんか。~~
32
-
33
-
34
-
35
- 適当に書いてました。ごめんなさい。間違ってるので書き直します。

1

間違ってた・・・

2018/05/19 11:53

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -16,7 +16,9 @@
16
16
 
17
17
  ```
18
18
 
19
- のelseのときにiが期待される結果になっている訳なので、そのままbreakして(外側のforのbreak)
19
+ ~~のelseのときにiが期待される結果になっている訳なので、そのままbreakして(外側のforのbreak)
20
+
21
+ ~~
20
22
 
21
23
  ```python
22
24
 
@@ -26,4 +28,8 @@
26
28
 
27
29
 
28
30
 
29
- でいけませんか。
31
+ ~~でいけませんか。~~
32
+
33
+
34
+
35
+ 適当に書いてました。ごめんなさい。間違ってるので書き直します。