[백준] 1929번 소수 구하기 / C++
#문제
#풀이
#include <iostream>
using namespace std;
bool isPrimeNumber(int x)
{
if (x <= 1) return false;
if (x <= 3) return true;
if (x % 2 == 0 || x % 3 == 0) return false;
for (int i = 5; i * i <= x; i += 6)
{
if (x % i == 0 || x % (i + 2) == 0)
{
return false;
}
}
return true;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int m, n;
cin >> m >> n;
for (int i = m; i <= n; ++i)
{
if (isPrimeNumber(i))
{
cout << i << '\n';
}
}
return 0;
}
#정리
m이상 n이하의 소수를 모두 출력하는 프로그램을 작성하는 문제. 소수를 찾는 알고리즘을 만드는 데 유용한 6k ± 1 최적화 방법을 사용하여 해결했다. 이 테크닉은 모든 소수가 6의 배수 양 옆 혹은 6의 배수를 제외한 6k ± 1형태로 존재한다는 관찰에 기반한다.
소수를 빠르게 찾는 방법
Enjoy Reading This Article?
Here are some more articles you might like to read next: