KU COSE101 2018기말고사 4번 문제

1 minute read

             
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