반응형
문제
알고리즘 분류 : 에라토스테네스의 체
해결 방법 : 에라토스테네스의 채를 구현하면 끝나는 문제.
아쉬웠던 점
글을 쓰며 생각이 들었는데, Num 배열 또한 절반만 사용할 수 있었는데 그러지 않아서 아쉽다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#include <iostream>
using namespace std;
bool Num[1000001] = {};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int Start, End;
cin >> Start >> End;
for (int i = 3; i <= End; i += 2)
if(!Num[i])
for (int j = 3; j*i <= End; ++j)
Num[i * j] = true;
if (Start == 1 || Start == 2)
{
Start = 3;
if (End != 1)
cout << "2" << '\n';
}
else if (Start % 2 == 0)
++Start;
for (int i = Start; i <= End; i += 2)
if (!Num[i])
cout << i << '\n';
}
|
cs |
핵심은 반복문을 2개씩 증가하면서 진행하였다. (어쩌피 2의 배수는 무조건 소수가 아니니까 2는 번외로 생각했음.) 이를 위하여 20번~27번째 줄에 2를 출력하기 위해서 뻘짓이 살짝 들어갔지만, 더 이득이라고 생각한다.
반응형
'코딩 > 문제풀이-백준' 카테고리의 다른 글
백준 1715번 - 카드 정렬하기 (C++) (0) | 2021.04.27 |
---|---|
백준 14503번 - 로봇 청소기 (C++) (0) | 2021.04.09 |
백준 7562번 - 나이트의 이동 (C++) (0) | 2021.04.07 |
백준 2504번 - 괄호의 값 (C++) (0) | 2021.04.04 |
백준 6198번 - 옥상 정원 꾸미기 (C++) (0) | 2021.04.03 |
댓글