PS/Baekjoon Online Judge

[백준 1990] 소수인팰림드롬 [C]

kimyoungrok 2021. 8. 26. 19:50

백준 - 1747


풀이

"백준 1747, 소수&팰림드롬"와 비슷한 문제다.

입력받은 a~b에 존재하는 팰림드롬 소수를 출력해주면된다.

단, 9,989,899 이후로 1e8까지는 팰림드롬 소수가 없기 때문에 범위에서 제한해주면 된다.


소스코드

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <math.h>
#define MAX 9989900
bool cNum[MAX] = {0, 1};
int main(){
    int sq = sqrt(MAX);
    for (int i = 2; i <= sq; i++)
        if(!cNum[i])
            for (int j = 2*i; j < MAX; j += i)
                cNum[j] = true;			
                
    int a, b;
    scanf("%d %d", &a, &b);
    b >= MAX  && (b = MAX-1);
    for (int i = a; i <= b; i++)
        if (!cNum[i]){
            char str[8];
            sprintf(str, "%d", i);
            int len = strlen(str), j;
            for (j = 0; j < len/2; j++)
                if (str[j] != str[len-j-1]) break;
            if (j == len/2) printf("%d\n", i);
        }
    puts("-1");
}

 


출처 및 참고자료

 

1990번: 소수인팰린드롬

151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되

www.acmicpc.net

 

[백준 1747] 소수&팰림드롬 [C]

풀이 에라토스테네스의 체로 소수가 아닌 수들을 찾고, 입력받은 N부터 소수인 수들중에 팰림드롬인지 확인해서 맞으면 해당 수를 출력하고 탐색을 종료하면 된다. 단, 98689 이후의 수들이 갖는

kyr-db.tistory.com