숫자 n이 주어지면 n보다 작은 가장 가까운 소수를 찾아야 합니다. n - 1부터 확인하기 시작하면 번호를 쉽게 찾을 수 있습니다. 몇 가지 예를 살펴보겠습니다.
입력
10
출력
7
알고리즘
- 숫자 n을 초기화합니다.
- n - 1에서 1까지 반복하는 루프 작성
- 찾은 첫 번째 소수 반환
- 주어진 n보다 작은 소수를 찾지 못한 경우 -1 반환
구현
다음은 위의 알고리즘을 C++로 구현한 것입니다.
#include <bits/stdc++.h> using namespace std; bool isPrime(int n) { if (n == 2) { return true; } for (int i = 2; i <= ceil(sqrt(n)); i++) { if (n % i == 0) { return false; } } return true; } int getNearestPrimeNumber(int n) { for (int i = n - 1; i > 1; i--) { if (isPrime(i)) { return i; } } return -1; } int main() { int n = 20; cout << getNearestPrimeNumber(n) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
19