본문 바로가기
Problem Solving

[BOJ 2960] 에라토스테네스의 체

by Ladun 2019. 12. 30.

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

 

2960번: 에라토스테네스의 체

문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에

www.acmicpc.net


2960번 문제는 2 ~ N까지의 수를 에라토스테네스의 체를 이용하여 지울 때 K번째 지워진 수를 찾는 문제이다.

 

간단하게 수를 지울 때마다 K의 수를 감소시키고 K가 0이 될 때 해당 수를 출력하면 된다.


#include <stdio.h>

int number[1001];

int main()
{
	int n, k;

	scanf("%d %d", &n, &k);	
	for (int i = 2; i <= n; i++)
	{
		if (number[i])
			continue;

		for (int j = i; j <= n; j += i)
		{
			if (!number[j])
			{
				--k;
				if (k == 0)
				{
					printf("%d", j);
				}
				number[j] = 1;
			}
		}
	}
	return 0;
}

'Problem Solving' 카테고리의 다른 글

[BOJ 2407] 조합  (0) 2020.01.01
[BOJ 3054] 피터팬 프레임  (0) 2019.12.30
[BOJ 1629] 곱셈  (0) 2019.03.17
[BOJ 1964] 오각형, 오각형, 오각형…  (0) 2019.03.17
[BOJ 1978] 소수 찾기  (0) 2019.03.16