매일 알고리즘 2문제

2960 에라토스테네스의 체

IT컴순이 2018. 2. 1. 19:13

기본 알고리즘을 통해 확인할 수 있듯, 이번 문제는 에라토스테네스의 체를 이용하여 풀 수 있는 문제이다.

한가지 유의할 점은 이번 문제에서는 2와 3과 같은 출발(?) 하는 소수 또한 포함되어 계산한다는 점!

간단한 문제이므로 소스코드만 첨부하여 오늘의 알고리즘 풀이는 마친다.


<소스코드>



#include <cstdio>

int N, K,cnt;
bool visit[1001],flag;

int main() {
	scanf("%d %d", &N, &K);
	for (int i = 2; i <= N; i++) {
		for (int j = 1; j*i <= N; j++) {
			if (!visit[i*j]) cnt++;
			visit[i*j] = true;
			if (cnt == K) {
				printf("%d\n", i*j);
				flag = true;
				break;
			}
		}
		if (flag == true) break;
	}
}