본문 바로가기
C/Example

[C] 예제 - 소수 판별 (함수 이용)

by 꾸압 2021. 3. 5.

<문제>

숫자를 입력하였을 때 그 숫자가 소수인지 아닌지 판별하는 프로그램을 만드시오

 

<해설.1>

#include <stdio.h>
#include <stdlib.h>

void find_prime(int a);

int main(){
	
	int number = 0;
	
	printf("정수를 입력하세요 : ");
	scanf("%d", &number);
	find_prime(number);
	
	return 0;
} 

void find_prime(int a){
	int i;
	int count = 0;
	for(i=1; i<=a; i++){
		if(a%i == 0){
			count++;
		}
	}
	
	if (count == 2){
		printf("%d는 소수 입니다. \n", a);
	} else {
		printf("%d는 소수가 아닙니다.", a);
	}
}

 

<해설.2>

#include <stdio.h>

int get_integer();
int is_prime(int a);

int main(void){
	int a, result;
	
	a = get_integer();
	result = is_prime(a);
	
	if(result == 1){
		printf("입력한 수는 소수입니다.\n");
	} else {
		printf("입력한 수는 소수가 아닙니다.\n");
	}
}

int get_integer(){
	int a;
	printf("정수 입력 : ");
	scanf("%d", &a);
	return n; 
}

int is_prime(int a){
	int cnt = 0, i;
	
	for(i=1; i<=a; i++){
		if(n%i == 0){
			cnt++;
		}
	}
	return (cnt == 2);
}

 

count(cnt) 가 2일 때 return  하는 이유 :

소수는 1과 자기 자신으로만 나눠지므로, cnt 값이 2 이기에 그렇습니다.

 

<해설.3>

#include <stdio.h>

int find_prime(int num){
	int i;
	
	for(i=2; i<num; i++){
		if(num%i == 0){
			return 0;	//소수가 아닌 숫자면 0으로 return 
		}
	}
	return num;	// 소수면 소수값으로 return 
}

int main(){
	int chk;
	
	printf("확인 할 수를 입력하세요 : ");	scanf("%d", &chk);
	
	int temp = find_prime(chk);
	
	if(temp != 0 ){
		printf("%d 은 소수입니다.\n", chk);	// return 0; 
	} else {
		printf("%d 은 소수가 아닙니다.", chk);	// return nn
	}
	return 0;
} 

소수가 아닌 숫자면 0으로 return 하고, 소수면 입력한 수를 return 하여 print 합니다.

 

 

댓글