이 프로그램에서는 사용자가 콘솔을 통해 입력한 두 개의 숫자가 서로 '친화 쌍(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은 각각 약수의 합이 자기 자신과 같은 완전수이므로, 프로그램은 두 숫자가 조건을 만족하는 쌍이라고 판별합니다.