약혼자 더할 때 약수의 합이 다른 숫자와 같은 방식으로 두 숫자의 쌍입니다.
예를 들어 (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