KU COSE101 2018기말고사 4번 문제
2016 기출 | 1번 | 2번 | 3번 | 4번 | 5번 | |
2017 기출 | 1번 | 2번 | 3번 | 4번 | 5번 | |
2018 기출 | 1번 | 2번 | 3번 | 4번 | 5번 | 6번 |
197은 circular prime이라고 불리는데, 그 이유는 이 숫자가 prime이면서 이것을 rotate 한 값, 즉 971, 719도 역시 prime 이기 때문이다. 어떤 수가 circular prime인지 확인할 수 있도록 다음 함수를 완성하시오. 필요한 경우 추가로 함수를 정의할 수 있다.
#include<stdio.h>
//define extra functions here if needed
int is_circular_prime(int n) {
}
int main() {
int num;
printf("Enter number: ");
scanf("%d",&num);
if(is_circular_prime(num)) printf("yes");
else printf("no");
}
예시풀이
#include<stdio.h>
//define extra functions here if needed
int dig(int p) {
int cnt=0;
while(p){
p/=10;
cnt++;
}
return cnt;
}
int is_prime(int k) {
int i;
for(i=2 ; i*i<=k ; i++){
if(k%i==0) return 0;
}
return 1;
}
int pow(int k) {
int i, n = 1;
for(i=0 ; i<k ; i++) n*=10;
return n;
}
int is_circular_prime(int n) {
int i;
int digit = dig(n);
int newnum = n, t;
for(i=0 ; i<digit ; i++){
if(!is_prime(newnum)) break;
t = newnum%10;
newnum/=10;
newnum += t * pow(digit-1);
}
if(i==digit) return 1;
}
int main() {
int num;
printf("Enter number: ");
scanf("%d",&num);
if(is_circular_prime(num)) printf("yes");
else printf("no");
}
Comments