숫자 N이 주어졌습니다. N보다 큰 소수 회문을 찾아야 합니다. 예를 들어 보겠습니다.
입력
N = 10
출력
11
알고리즘
-
숫자 N을 초기화합니다.
-
주어진 숫자가 소수인지 확인하는 함수를 작성하십시오.
-
주어진 숫자가 회문인지 확인하는 함수를 작성하세요.
-
N + 1부터 반복하는 루프 작성 다음 주요 회문을 찾을 때까지.
- 숫자가 소수와 회문인지 확인합니다.
- 숫자가 소수와 회문인 경우
- 번호를 반환합니다.
구현
다음은 위의 알고리즘을 C++로 구현한 것입니다.
#include<bits/stdc++.h> using namespace std; bool isPrime(int n) { if (n < 2) return false; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) return false; } return true; } bool isPalindrome(int n) { int num, digit, rev = 0; n = num; while (num) { digit = num % 10; rev = (rev * 10) + digit; num = num / 10; } return n == rev ? true : false; } int getNextSmallestPrimePalindrome(int n) { int i = n + 1; while (true) { if (isPrime(i) && isPalindrome(i)) { return i; } i += 1; } } int main() { int N = 15; cout << getNextSmallestPrimePalindrome(N) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
17