[#62][알고리즘] 소수 구하기 (에라토스테네스의 체)
백준 > 소수 구하기
문제 링크(https://www.acmicpc.net/problem/1929)문제
M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1≤M≤N≤1,000,000)
출력
한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.
예제 입력
3 16
예제 출력
3 5 7 11 13
C++풀이
#include <iostream>
#include <algorithm>
#define SIZE 1000000
using namespace std;
long long isNotPrime[SIZE] = {0};
void eratos() {
for(int i = 2; i * i < SIZE; i++)
if(!isNotPrime[i])
for (int j = i * i; j < SIZE; j += i) {
isNotPrime[j] = 1;
}
isNotPrime[1] = 1;
}
int main() {
long long a, b;
scanf("%u %u", &a, &b);
eratos();
for (long long i = a; i <= b; i++) {
if (!isNotPrime[i])
printf("%d\n", i);
}
return 0;
}
| cs |
댓글
댓글 쓰기