문제 설명
두 수를 입력 받아 그 사이의 소수를 인쇄하는 함수를 설계하라
main에서 두 수를 입력 받은 함수에 전달하여 두 수 사이의 소수를 인쇄한다
다음 사항을 준수하도록 한다
입력 값이 음수이거나 0이면 다시 입력 받을 것 (즉, 양의 정수만 입력 값으로 사용함)
10 다음 200이 올수도 있지만 200다음 10이 올 수도 있으니 어떤 경우든지 처리되도록 함
잘못된 입력에 대한 예외처리는 main에서 할까 소수인쇄 함수에서 할까?
일반적으로 함수는 단순한 일만 하게 만드는 것이 좋음
결국 main에서 잘못된 입력을 처리해 주고 정상인 값들만 함수로 전달하는 것이 좋음
예외처리 및 입력 코드는 아래 코드 참고
- 소수는 1은 포함이 되지 않지만 그냥 너그러이 용서해 주세요 1도 소수로 보고 인쇄 해주세요
#include <stdio.h>
void Print_Prime(int min, int max)
{
}
void main(void)
{
int a, b;
scanf(" %d", &a);
scanf(" %d", &b);
if ((a <= 0) || (b <= 0))
{
printf("Error!!\n");
}
else
{
// 코드 구현
Print_Prime(a, b);
}
}
입력 예시
1
20
출력 예시
1
2
3
5
7
11
13
17
19
정답 코드
#include <stdio.h>
void Print_Prime(int min, int max)
{
int i, j, k;
for (i = min; i <= max; i++)
{
k = 0;
for (j = 2; j < i; j++)
{
if ((i % j) == 0)
{
k = 1;
break;
}
}
if (k == 0)
{
printf("%d\n", i);
}
}
}
void main(void)
{
int i, a, b;
scanf(" %d", &a);
scanf(" %d", &b);
if ((a <= 0) || (b <= 0))
{
printf("Error!!\n");
}
else
{
if (a > b)
{
i = a;
a = b;
b = i;
}
Print_Prime(a, b);
}
}
메모
printf 내부의 \n 습관화 필요