Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 약혼한 숫자?

<시간/>

약혼자 더할 때 약수의 합이 다른 숫자와 같은 방식으로 두 숫자의 쌍입니다.

예를 들어 (a, b)는 s(a) =b + 1이고 s(b) =a + 1인 경우 약혼한 숫자의 쌍입니다. 여기서 s(b)는 b의 부분 표본 합계입니다. 등가 조건은 σ (a) =σ(b) =a + b + 1, 여기서 σ는 제수 합 함수를 나타냅니다.

약혼한 숫자의 처음 몇 쌍은 (48, 75), (140, 195), (1050, 1925), (1575, 1648), (2024, 2295), (5775, 6128)입니다.

알려진 모든 약혼한 숫자 쌍은 반대 패리티를 갖습니다. 동일한 패리티의 모든 쌍은 1010을 초과해야 합니다.

알고리즘

Step 1: Find the sum of all divisors for both numbers.
Step 2: Finally check if the sum of the divisors of number added by one is equal to the other number or not.
Step 3: If yes, it is a Betrothed number and otherwise not.


Input:a = 48 b = 75
Output:
48 and 75 are Betrothed numbers

설명

48의 약수:1, 2, 3, 4, 6, 8, 12, 16, 24. 합은 76입니다.

75의 약수 :1, 3, 5, 15, 25. 합은 49입니다.

for 루프를 사용하여 1부터 a-1까지 각 숫자를 확인합니다.

루프의 각 숫자가 숫자를 나눌 수 있는지 여부를 확인합니다. 그렇다면 이 숫자를 DivisorSum에 추가하십시오. 루프가 완료된 후 aDivisorSum에는 에 대한 모든 제수의 합이 포함됩니다.

마찬가지로 두 번째 숫자에 대한 모든 약수의 합을 찾아 bDivisorSum에 저장합니다.

이제 한 숫자의 제수의 합이 다른 숫자에 1을 더하여 같은지 확인하십시오. 그렇다면 둘 다 약혼자 번호라고 인쇄하십시오. 그렇지 않으면 그렇지 않습니다.

예시

#include <stdio.h>
int main() {
   int i;
   int a,b;
   int aDivisorSum = 0;
   int bDivisorSum = 0;
   a=48 ;
   b=75 ;
   for( i = 1; i < a; i++) {
      if(a % i == 0) {
         aDivisorSum = aDivisorSum + i;
      }
   }
   for( i = 1; i < b; i++) {
      if(b % i == 0) {
         bDivisorSum = bDivisorSum + i;
      }
   }
   if(( a+1== bDivisorSum) && (b+1 == aDivisorSum)) {
      printf("%d and %d are Betrothed numbers\n",a,b);
   } else {
      printf("%d and %d are not Betrothed numbers\n",a,b);
   }
}

출력

48 and 75 are not Betrothed numbers