回答編集履歴
2
書き直した
answer
CHANGED
@@ -1,4 +1,47 @@
|
|
1
|
+
こんなになっちゃいました。可能な組み合わせの和の中に素数が入っていたら再サンプリングしなおしてやり直し、入っていなければbreakしてその結果を出す・・・というロジックですね。
|
2
|
+
|
1
3
|
```python
|
4
|
+
import random
|
5
|
+
import itertools
|
6
|
+
|
7
|
+
def is_prime(n):
|
8
|
+
for i in range(2, n):
|
9
|
+
if n%i == 0:
|
10
|
+
return False
|
11
|
+
return True
|
12
|
+
|
13
|
+
N = int(input())
|
14
|
+
|
15
|
+
primes_list100 = []
|
16
|
+
x = 0
|
17
|
+
for i in range(2,1000):
|
18
|
+
if is_prime(i):
|
19
|
+
primes_list100.append(i)
|
20
|
+
x += 1
|
21
|
+
if x >=100:
|
22
|
+
break
|
23
|
+
|
24
|
+
primes_list = random.sample(primes_list100,N)
|
25
|
+
while True:
|
26
|
+
prime_flag = False
|
27
|
+
for combi in itertools.combinations(primes_list,5):
|
28
|
+
combi_sum = sum(combi)
|
29
|
+
if is_prime(combi_sum):
|
30
|
+
prime_flag = True
|
31
|
+
break
|
32
|
+
if prime_flag:
|
33
|
+
primes_list = random.sample(primes_list100,N)
|
34
|
+
else:
|
35
|
+
break
|
36
|
+
|
37
|
+
print(' '.join(map(str, primes_list)))
|
38
|
+
```
|
39
|
+
|
40
|
+
Nが大きくなると時間制約にひっかかると思います・・・。
|
41
|
+
|
42
|
+
### よく読まないで書いてた回答
|
43
|
+
なんでこんなの書いたんだろう・・・。
|
44
|
+
```python
|
2
45
|
for i in itertools.combinations(primes_list,5):
|
3
46
|
k = sum(i)
|
4
47
|
for j in range(2,k):
|
@@ -6,13 +49,4 @@
|
|
6
49
|
break
|
7
50
|
else:
|
8
51
|
primes_list = primes()
|
9
|
-
```
|
52
|
+
```
|
10
|
-
~~のelseのときにiが期待される結果になっている訳なので、そのままbreakして(外側のforのbreak)
|
11
|
-
~~
|
12
|
-
```python
|
13
|
-
print(' '.join(map(str, i)))
|
14
|
-
```
|
15
|
-
|
16
|
-
~~でいけませんか。~~
|
17
|
-
|
18
|
-
適当に書いてました。ごめんなさい。間違ってるので書き直します。
|
1
間違ってた・・・
answer
CHANGED
@@ -7,9 +7,12 @@
|
|
7
7
|
else:
|
8
8
|
primes_list = primes()
|
9
9
|
```
|
10
|
-
のelseのときにiが期待される結果になっている訳なので、そのままbreakして(外側のforのbreak)
|
10
|
+
~~のelseのときにiが期待される結果になっている訳なので、そのままbreakして(外側のforのbreak)
|
11
|
+
~~
|
11
12
|
```python
|
12
13
|
print(' '.join(map(str, i)))
|
13
14
|
```
|
14
15
|
|
15
|
-
でいけませんか。
|
16
|
+
~~でいけませんか。~~
|
17
|
+
|
18
|
+
適当に書いてました。ごめんなさい。間違ってるので書き直します。
|