본문 바로가기

카테고리 없음

[C언어] 소수(Prime Number) 구하기 - 설계 및 구현

int prime_number(int number)
{
	int i;
	for(i = 2; i < number; i++)
	{
		if(number % i == 0)break;
	}
	if(i == number)return 1;
	else return 0;
}

void main()
{
	int cnt = 0, su, sosu = 2;

	back:
	printf("구하고자 하는 소수의 갯수를 입력해 주세요 : ");
	scanf("%d", &su);
	if(su < 1)
	{
		printf("입력값이 잘못되었습니다. 다시 입력해 주세요!\n\n");
		goto back;
	}

	while(cnt < su)
	{
		if(prime_number(sosu) == 1)
		{
			cnt++;
			printf("%d\t", sosu);
		}
		sosu++;
	}
	printf("\n");
}

소수를 구하는 함수의 구현은 비교적 간단하다. 소수를 판별하기 위해서 자기 자신과 1외에 다른 수로는 나누어 떨어지는가를 확인하면 된다.


2부터 매개변수로 넘어온 값까지 나누어 떨어지는지 확인 후 소수이면 즉 나누어 떨어지는 숫자가 없었다면 1을 반환하고 나누어 떨어지는 숫자가 있었다면 0을 리턴하면 된다.


main에서는 출력하고자 하는 갯수를 입력받은 후 오류여부를 검사한다. 오류가 없다면 입력받은 갯수만큼 소수를 찾는 무한루프[while(cnt < su)]를 만들고 소수를 판별하는 함수에 2,3,4~~~N을 차례대로 넣어 반환값을 확인한다.


아직까지 그리 어렵지 않으므로 더 자세한 설명은 줄이도록 하겠다.