m부터 n 사이의 소수를 모두 출력하는 문제이다.
m과 n의 범위는 1부터 1,000,000.
저번에 정리한 세 가지 소수 판별 알고리즘 중 에라토스테네스의 체를 사용하였다.
그리고 구글을 돌아다니다 배운 동적 할당 도 사용하였다.
뿌듯
#include <iostream>
#include <algorithm>
using namespace std;
int m, n;
void getPrime() {
int *isPrime = new int[n + 1];
fill(isPrime, isPrime + (n + 1), 1);
isPrime[0] = 0;
isPrime[1] = 0;
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
for (int j = i * 2; j <= n; j += i) {
isPrime[j] = 0;
}
}
}
for (int i = m; i <= n; i++) {
if (isPrime[i]) cout << i << "\n";
}
return;
}
int main() {
cin >> m >> n;
getPrime();
return 0;
}
원트맞은 정말 큰 도파민..
쿨감자는 한방에 끝내버려~