1. 목적
  - 소수를 이해한다.
  - 사용자 정의 자료형 함수를 출력한다.

2. 문제 (점수 : 15 점)
  - 두 정수 사이에 존재하는 소수(prime)를 출력한다.
  - 입력 순서에 따른 크기 순서는 상관치 않는다.
  - 마지막에 소수의 개수를 출력한다.
  - 출력 화면

정수값 두개를 입력하세요 : 541 23
소수 : 23       29      31      37      41      43      47      53      59
61      67      71      73      79      83      89      97      101     103
107     109     113     127     131     137     139     149     151     157
163     167     173     179     181     191     193     197     199     211
223     227     229     233     239     241     251     257     263     269
271     277     281     283     293     307     311     313     317     331
337     347     349     353     359     367     373     379     383     389
397     401     409     419     421     431     433     439     443     449
457     461     463     467     479     487     491     499     503     509
521     523     541

23 와 541 사이의 소수의 개수 : 92
Press any key to continue


3. 이해
  - 소수를 정확히 이해하고 C 에 적용 시킬수 있는가?

4. 코드

#include <stdio.h>

enum bool {false, true};
enum bool isprime(int detect)
{
 int i = 2;

 if(detect <= 1) return false;

 while(i < detect)
 {
  if (detect % i == 0) return false;
  i++;
 }

 return true;

}

int main()
{
 int a, b, start, end, count;
 a = b = start = end = count = 0;

 printf("정수값 두개를 입력하세요 : ");
 scanf("%d %d", &a, &b);

 start = a < b ? a : b;
 end = a < b ? b : a;

 a = start;
 b = end;
 
 printf("소수 : ");

 while(start <= end)
 {
  if(isprime(start))
  {
   printf("%d\t",start);
   count++;
  }
  start++;
 
 }

 printf("\n\n%d 와 %d 사이의 소수의 개수 : %d\n", a, b, count);

 return 0;
}

5. 해설
  - 이전 문제와 다르게 풀기 위해서 isprime 이라는 판정 함수를 만들었습니다.
  - 사용자 정의형 bool 을 만들어서 isprime 해서 나온 값을 false / true 로 구분해서 사용했습니다.

6. 참고
  - 유사 문제

Posted by 카켈
이전페이지 1 다음페이지