C언어

백준 1929 소수구하기 : prime배열에 저장하고 구하기!

mcdn 2020. 8. 19. 16:19
반응형

https://www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

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

www.acmicpc.net

예제 입력 1 복사

3 16

예제 출력 1 복사

3 5 7 11 13

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

int prime[1000002];

			
void makeprimeset()
{
	int n = 1000000; 
	prime[2] = 1;
	for (int i = 3; i <= n; i += 2)
	{
		prime[i] = 1;
	}
	for (int i = 3; i <= (n / i) + 1; i+=2)
	{
		if (prime[i] == 1)
		{
			for (int j = i * 2; j <= n; j += i)
				prime[j] = 0;
		}
	}
}

int main(void)
{
	int a, b;
	makeprimeset();
	scanf("%d %d", &a, &b);
	for (int i = a; i <= b; i++)
	{
		if (prime[i] == 1)
			printf("%d\n", i);
	}
	return (0);
}
반응형