Home > Study > C Language > C task > [ex33] 두 수를 입력 받아서 그 사이에 존재하는 소수를 인쇄하는 프로그램

[ex33] 두 수를 입력 받아서 그 사이에 존재하는 소수를 인쇄하는 프로그램
Study Language

문제 설명


두 수를 입력 받아 그 사이의 소수를 인쇄하는 함수를 설계하라
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 습관화 필요