Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 다음으로 작은 소수 회문

<시간/>

숫자 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