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

두 숫자가 완전수 쌍인지 확인하는 C 프로그램

이 프로그램에서는 사용자가 콘솔을 통해 입력한 두 개의 숫자가 서로 '친화 쌍(friendly pair)' 관계, 즉 각 숫자의 약수 합이 자기 자신과 같은 특별한 성질을 가지는지 확인해 봅니다.

개념 정리

number1의 모든 약수의 합이 number1과 같고, number2의 모든 약수의 합이 number2와 같다면 이 두 숫자는 조건을 만족하는 수입니다. 참고로 이처럼 자기 자신을 제외한 약수의 합이 자기 자신과 같아지는 수는 수학에서 완전수(perfect number)라고 부르며, 6과 28이 대표적인 예입니다.

  • 6 = 1 + 2 + 3
  • 28 = 1 + 2 + 4 + 7 + 14

친화 쌍을 찾는 로직

먼저 number1의 모든 약수의 합을 구합니다.

for(i=1;i<number1;i++){
    if(number1 % i == 0){
        result1= result1 +i;
    }
}

같은 방식으로 number2의 모든 약수의 합을 구합니다.

for(i=1;i<number2;i++){
    if(number2 % i == 0){
        result2=result2+i;
    }
}

마지막으로 두 결과를 비교하여 친화 쌍 여부를 판별합니다.

if(result1==number1 && result2==number2)

이 조건이 참이면 두 숫자는 조건을 만족하는 쌍이며, 그렇지 않으면 해당하지 않습니다.

전체 예제 코드

다음은 주어진 두 숫자가 조건을 만족하는지 확인하는 C 프로그램의 전체 코드입니다.

#include<stdio.h>
int main(){
    int number1,number2,i;
    printf("Enter two numbers:");
    scanf("%d%d",&number1,&number2);
    int result1=0,result2=0;
    for(i=1;i<number1;i++){
        if(number1 % i == 0){
            result1= result1 +i;
        }
    }
    for(i=1;i<number2;i++){
        if(number2 % i == 0){
            result2=result2+i;
        }
    }
    if(result1==number1 && result2==number2)
        printf("Abundant Pairs");
    else
        printf("Not abundant Pairs");
    return 0;
}

실행 결과

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

Enter two numbers:6 28
Abundant Pairs

입력된 6과 28은 각각 약수의 합이 자기 자신과 같은 완전수이므로, 프로그램은 두 숫자가 조건을 만족하는 쌍이라고 판별합니다.