반응형
가장 많이 사용된 자릿수뒤집은 숫자의 소수 여부 판단
- N을 입력받고 N개의 자연수를 입력받는다.
- 자연수를 뒤집고 소수 여부를 판단하여, 소수일 경우 출력한다.
- 예를 들어, 910을 뒤집으면 19로 바꾸어 판단해야 한다.
- 예를 들어, 5을 입력하고 32 55 62 3700 250을 입력하면 23과 73이 출력된다.
풀이
#include <stdio.h>
int reverse(int x) {
int res=0, tmp;
while(x > 0) {
tmp = x % 10;
res = res * 10 + tmp;
x = x / 10;
}
return res;
}
bool isPrime(int x) {
int i;
if (x == 1) {
return false;
}
for(i=2; i<x; i++) {
if (x % i == 0) return false;
}
return true;
}
int main() {
//freopen("input.txt", "rt", stdin);
int n, num, i, tmp;
scanf("%d", &n);
for(i = 1;i <= n;i++) {
scanf("%d", &num);
tmp = reverse(num);
if (isPrime(tmp)) printf("%d ",tmp);
}
return 0;
}
- reverse : 이전값을 10으로 곱해 자릿수를 늘려주는 것이 포인트
- 반복문 사용시 그 횟수를 잘 생각하자. 아래 main의 반복문을 돌릴 때 i = 0으로 시작했다면 i < n을 조건으로 주어야 횟수가 정상적으로 처리된다.
- 소수 확인 시 1은 예외적으로 생각해야 한다. 주의하자.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 아나그램 (by C++) (0) | 2020.03.15 |
---|---|
[알고리즘 연습] 소수의 개수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 가장 많이 사용된 자릿수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 숫자의 총 개수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 자릿수의 합 비교하기 (by C++) (0) | 2020.03.12 |