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