알고리즘 문제풀이

소수&팰린드롬[백준 1747]

wiojfe 2024. 5. 30. 19:39

 

https://www.acmicpc.net/problem/1747

 

 

#include <stdio.h>
#include <stdbool.h>
#include <math.h>

// 소수 판별 함수
bool is_prime(int num) {
    if (num < 2) return false;
    if (num == 2) return true;
    if (num % 2 == 0) return false;
    for (int i = 3; i <= sqrt(num); i += 2) {
        if (num % i == 0) return false;
    }
    return true;
}

// 팰린드롬 판별 함수
bool is_palindrome(int num) {
    int original = num;
    int reversed = 0;
    
    while (num > 0) {
        reversed = reversed * 10 + num % 10;
        num /= 10;
    }
    
    return original == reversed;
}

int main() {
    int N;
    scanf("%d", &N);

    int i = N;
    while (true) {
        if (is_prime(i) && is_palindrome(i)) {
            printf("%d\n", i);
            break;
        }
        i++;
    }
    
    return 0;
}