Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

두 구간 사이의 소수를 출력하는 C 프로그램 완벽 가이드

이 글에서는 C 언어를 사용해 사용자가 입력한 두 수 사이에 존재하는 소수(prime number)를 찾아 출력하는 방법을 알아봅니다.

기본 원리

프로그램은 다음과 같은 순서로 동작합니다.

먼저, 실행 중에 콘솔에서 두 개의 정수를 입력받습니다. 그다음 소수 여부를 판별하기 위한 플래그(flag) 변수를 선언하고, for 반복문의 조건을 활용해 해당 숫자가 소수인지 검사합니다.

플래그 값이 0이면 그 숫자는 소수이므로 화면에 출력하고, 플래그 값이 1이면 약수가 존재한다는 의미이므로 반복문을 빠져나가 다음 숫자로 넘어갑니다.

소스 코드

다음은 두 구간 사이의 소수를 출력하는 C 프로그램입니다.

#include <stdio.h>
int main(){
    int number1,number2,i,j,flag;
    printf("enter the two intervals:");
    scanf("%d %d",&number1,&number2);
    printf("prime no's present in between %d and %d:",number1,number2);
    for(i=number1+1;i<number2;i++){// interval between two numbers
        flag=0;
        for(j=2;j<=i/2;++j){ //checking number is prime or not
            if(i%j==0){
                flag=1;
                break;
            }
        }
        if(flag==0)
            printf("%d\n",i);
    }
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과를 확인할 수 있습니다.

enter the two intervals:10 50
the number of prime numbers present in between 10 and 50:11
13
17
19
23
29
31
37
41
43
47

10과 50 사이에는 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 등 열한 개의 소수가 존재하며, 프로그램이 이를 정확히 출력하는 것을 볼 수 있습니다.

응용 예제: 소수를 제외한 수만 출력하기

이번에는 반대로, 두 수 사이에서 소수를 제거하고 나머지 숫자만 출력하는 프로그램을 살펴보겠습니다. 로직은 기본 예제와 유사하지만, 플래그 변수의 초기값과 판별 조건이 반대로 설정됩니다.

소스 코드

다음은 두 구간 사이의 숫자 중 소수를 제외하고 출력하는 C 프로그램입니다.

#include <stdio.h>
int main(){
    int number1,number2,i,j,flag;
    printf("enter the two intervals:");
    scanf("%d %d",&number1,&number2);
    printf("the numbers that are present after removing prime numbers in between %d and %d:\n",number1,number2);
    for(i=number1+1;i<number2;i++){// interval between two numbers
        flag=1;
        for(j=2;j<=i/2;++j){ //checking number is prime or not
            if(i%j==0){
                flag=0;
                break;
            }
        }
        if(flag==0)
            printf("%d\n",i);
    }
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

enter the two intervals:10 20
the numbers that are present after removing prime numbers in between 10 and 20:
12
14
15
16
18

10과 20 사이에서 소수인 11, 13, 17, 19가 제거되고, 합성수인 12, 14, 15, 16, 18만 출력되는 것을 확인할 수 있습니다.

정리

두 프로그램 모두 내부 반복문에서 2부터 해당 숫자의 절반까지 나누어 떨어지는지 검사하는 방식으로 소수를 판별합니다. 플래그 변수의 초기값(0 또는 1)과 최종 조건문만 바꾸면 소수를 출력하는 프로그램과 소수를 제외한 수를 출력하는 프로그램으로 손쉽게 전환할 수 있다는 점이 핵심입니다.