<문제>
숫자를 입력하였을 때 그 숫자가 소수인지 아닌지 판별하는 프로그램을 만드시오
<해설.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 합니다.
'C > Example' 카테고리의 다른 글
[C] 예제 - 계산기 제작 (함수, 포인터, 배열) (0) | 2021.03.05 |
---|---|
[C] 예제 - 계산기 제작 (함수, 포인터) (0) | 2021.03.05 |
[C] 예제 (함수, 포인터) (0) | 2021.03.05 |
[C] 예제 - 계산기 제작 (함수 이용) (0) | 2021.03.05 |
댓글