반응형
Q. 소수(prime number) 출력 프로그램

2 이상의 정수를 입력하여 2부터 입력한 수까지의 모든 소수를 출력합니다. 단, 한 줄에 5개씩 5칸 간격으로 출력합니다.

하나의 정수가 소수인지를 판단해서 출력하는 과정은 다음과 같습니다. 

 

① 일단 소수라고 가정한다.

② 2부터 그 정수보다 하나 작은 수까지 하나라도 나누어 떨어지면 가정을 취소한다. 

③ ①의 가정이 ②에서 바뀌지 않았으면 그 정수를 출력한다.

 

위의 ①~③까지의 과정은 하나의 정수에 대해서 소수를 판별하는 과정이고 어떤 수까지의 모든 수를 판별하기 위해서는 ①~③까지의 과정을 다시 반복합니다. 

 

실행결과

 

문제를 푸시다가 어렵다고 느껴지신다면 조금 더 쉬운 문제를 풀어보시는 것을 권장함. 

2021.11.23 - [IT/코딩 예제] - [C언어] for문 기초 예제, 연습문제 1탄

 

[C언어] for문 기초 예제, 연습문제 1탄

for문 구구단 #include int main(void) { int N; scanf("%d", &N); for (int i = 1; i <=9; i++){ printf("%d * %d = %d\n", N, i, N*i); } return 0; } for문 반복 예제 #include int i; int main() { for(i=0; i..

cholink.tistory.com


 

 

 

 

 

 

 

 

 

 

 

 

소수 출력 프로그램 정답

#include <stdio.h>
int main(void)
{
     int num;
     int i, j;
     int pn;
     int cnt = 0;

     printf("2이상의 정수를 입력하세요 : ");
     scanf("%d", &num);

     for(i = 2; i <= num; i++)
     {
           pn = 1;
           for(j = 2; j < i; j++)
           {
                if((i % j) == 0)
                {
                      pn = 0;
                      break;
                }
           }
           if(pn == 1)
           {
                printf("%5d", i);
                cnt++;
                if((cnt % 5) == 0)
                {
                      printf("\n");
                }
           }
     }
     return 0;
}

break를 쓴 이유는 한번 나누어 떨어지면 더 이상 소수가 아니므로 그 이후에 다른 값으로 나누어 떨어지는지 확인할 필요가 없기 때문이다. 불필요한 반복을 즉시 중단해서 실행시간을 단축할 수 있음. break는 if문 안에 사용하더라도 if문만 빠져나가는 것이 아니고 if문이 포함된 반복문을 탈출함.

+ Recent posts