티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/4134
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T;
ll N;
bool cal(ll n)
{
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0) return false;
}
return true;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> T;
while(T--)
{
cin >> N;
while(!cal(N))
{
N++;
}
cout << N << "\n";
}
return 0;
}
주어진 N보다 같거나 큰 소수를 찾는 문제이다.
현재 N을 기준으로 소수 판별을 시작해 소수가 아니라면 계속 N 값을 증가시켜가며 다시 소수 판별을 해준다.
주의할 점은 N의 범위가 매우 커서 long long으로 선언해주어야 한다는 점이다.
소수 판별에서는 범위가 sqrt(n)이므로 long long으로 해줄 필요는 없다.
'백준 > 실버' 카테고리의 다른 글
[백준 10973번] 이전 순열 (C++) (0) | 2025.04.11 |
---|---|
[백준 1850번] 최대공약수 (C++) (0) | 2025.04.10 |
[백준 10972번] 다음 순열 (C++) (0) | 2025.04.03 |
[백준 13909번] 창문 닫기 (C++) (0) | 2025.03.30 |
[백준 13241]번 최소공배수 (C++) (0) | 2025.03.30 |