[백준/BOJ] 백준 1747번 : 소수&팰린드롬

2022. 2. 5. 17:17알고리즘 문제풀이

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

 

1747번: 소수&팰린드롬

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,

www.acmicpc.net

에라토스테네스의 체를 이용해 소수를 체크하고, 입력받은 n부터 숫자 확인해가며 팰린드롬이면서 소수인 수를 찾아서 문제를 해결했다

 

코드

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int n;
int prime_check[2000001];

//에라토스테네스의 체를 이용해 소수인것을 1로 체크
void MakeCheck()
{
	for (int i = 0; i <= 2000000; i++)
		prime_check[i] = 1;

	prime_check[0] = 0;
	prime_check[1] = 0;

	for (int i = 2; i <= 2000000; i++)
	{
		if (prime_check[i] == 1)
		{
			for (int j = i + i; j <= 2000000; j = j + i)
			{
				prime_check[j] = 0;
			}
		}
	}
}

int main()
{
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	MakeCheck();

	cin >> n;

	while (1)
	{
		string string_n = to_string(n);

		reverse(string_n.begin(), string_n.end());
		if (prime_check[n] == 1 && (to_string(n) == string_n))
		{
			cout << n;
			break;
		}


		n++;
	}


	return 0;
}