백준/백준-C++

1747번: 소수&팰린드롬

Beabletoet 2017. 5. 27. 23:01

#include <cstdio>

using namespace std;

#define max 2000000

int main()

{

int n, copy = 0;

bool num[max + 1];

for (int i = 2; i <= max; ++i)

num[i] = 1;

for (int i = 4; i <= max; i += 2)

num[i] = 0;

num[1] = 0;

for (long long i = 3; i <= max; i += 2)

if (num[i] == 1)

for (long long j = i*i; j <= max; j += 2 * i)

num[j] = 0;

for (scanf("%d", &n); 1; ++n, copy = 0)

{

for (int bil = 1000000, one = 1, check = 0; num[n] == 1 && bil > 0; bil /= 10)

{

if (check == 0 && n / bil > 0)

check = 1;

if (check == 1)

{

copy += ((n / bil) % 10)*one;

one *= 10;

}

}

if (copy == n)

{

printf("%d", n);

return 1;

}

}

}