-
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력 한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. 뒤집는 함수인 int reverse(int x) 와 소수인지를 확인하는 함수 bool isPrime(int x)를 반드시 작성하여 프로그래밍 한다.
입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 100,000를 넘지 않는다.
출력설명
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.
입력예제
4
32 66 3700 250
출력예제
23 73
#include<iostream> using namespace std; int reverse(int x) { int zero=0; int arr[6]; int temp = 0; int ten = 10; int division = 0; int remain = 0; int i = 0; int multi = 1; int result = 0; temp = x; for (i = 0; i < 6; i++) { division = temp / ten;//x값을 10으로 나눈 값을 division 삽입 remain = temp % ten;//x값을 10으로 나눈 나머지를 remain삽입 arr[i] = remain;//나머지를 배열에 삽입 temp = division;//나눈값을 다시 temp에 삽입 } for (int j = 0; j < 6; j++) { if (arr[j] == 0) { zero++; } } for (int j = 0; j < 5 - zero; j++) { multi = multi * 10; } for (int j = 0; j < 5; j++) { if (arr[j] == 0)//값이 0인 배열은 다음으로 넘어감 { continue; } else { result = (multi * arr[j]) + result; multi = multi / 10; } } return result; } bool isPrime(int x) { int number = 0; for (int i = 1; i <= x; i++) { if (x % i == 0) { number++; } } if (number == 2)//소수이면 1 { return true; } else//소수가 아니면 0 { return false; } } int main(void) { int arr[97]; int N=0; cin >> N; for (int i = 0; i < N; i++) { cin >> arr[i]; } for (int i = 0; i < N; i++) { if (isPrime(reverse(arr[i])) == 1) { cout << reverse(arr[i]) << " "; } } }
'algorism' 카테고리의 다른 글
LRU - 카카오 출제 캐시 문제 고급변형 (0) 2020.01.06 키 순 정렬 (0) 2020.01.05 멀티태스크 - 카카오 출제 알고리즘(고급변형) (0) 2020.01.05 자릿수 합 (0) 2020.01.05 Special Sort - 구글 출제 알고리즘 문제 (0) 2020.01.03