Python으로 구현한 3131번 100만 이하의 모든 소수 문제 풀이입니다.
n = 10 ** 6 + 1
data = [1] * n
data[0], data[1] = 0, 0
# 배수 처리
for i in range(2, n) :
if data[i] == 1 :
for j in range(i * 2, n, i) :
data[j] = 0
for i in range(n) :
if data[i] == 1 :
print(i, end=' ')
1. 문제에서 주어진 범위만큼의 길이를 가진 data 리스트의 요소들을 모두 1로 초기화한다.
2. data[0], data[1] 의 값은 소수가 아니므로 0으로 갱신한다.
3. 2부터 n까지를 범위로 하여 data[i]가 1일 경우(소수일 경우) 해당 수의 배수를 모두 0으로 갱신한다.
4. data 리스트에 존재하는 값이 1인 경우에만 해당 수를 출력한다.
'SWEA(Python) 풀이 > D3' 카테고리의 다른 글
SWEA[D3] (Python) 2817번 부분 수열의 합 풀이 (0) | 2022.05.26 |
---|---|
SWEA[D3] (Python) 2948번 문자열 교집합 풀이 (0) | 2022.05.26 |
SWEA[D3] (Python) 3142번 영준이와 신비한 뿔의 숲 풀이 (0) | 2022.05.25 |
SWEA[D3] (Python) 3233번 정삼각형 분할 놀이 풀이 (0) | 2022.05.25 |
SWEA[D3] (Python) 3260번 두 수의 덧셈 풀이 (0) | 2022.05.25 |