작심삼일

[백준] 1929번 | 소수 구하기 | C++ 본문

스터디/코테

[백준] 1929번 | 소수 구하기 | C++

yun_s 2021. 12. 2. 10:04
728x90
반응형

문제 링크: https://www.acmicpc.net/problem/1929


문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.


입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.


출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.


내 풀이

소수 여부를 판단하는 수가 최대 1,000,000이므로, 각각의 수가 소수인지 미리 판단해둔다.

소수인지 판단하는 방법은 각 수의 배수를 확인하는 것이다.


코드

#include<iostream>
#define len 1000001

int A, B;
int prime[len];

int find_prime() {
	prime[1] = 1;
	for (int y = 2; y <= B; y++) {
		if (prime[y] == 0){
			for (int x = 2 * y; x <= B; x += y) {
				prime[x] = 1;
			}
		}
	}

	return 0;
}

int main() {
	scanf("%d %d", &A, &B);

	find_prime();

	for (int t = A; t <= B; t++) {
		if (prime[t] == 0)	printf("%d\n", t);
	}

	return 0;
}
728x90
반응형
Comments