Số đã đính hôn là một cặp hai số theo cách mà tổng các ước của chúng khi được thêm vào bằng một số khác.
Ví dụ (a, b) là một cặp số hứa hôn nếu s (a) =b + 1 và s (b) =a + 1, trong đó s (b) là tổng của b:một điều kiện tương đương là σ (a) =σ (b) =a + b + 1, trong đó σ biểu thị hàm tổng của các ước số.
Một vài cặp số được hứa hôn đầu tiên là:(48, 75), (140, 195), (1050, 1925), (1575, 1648), (2024, 2295), (5775, 6128).
Tất cả các cặp số đã biết đều có số chẵn lẻ đối lập nhau. Bất kỳ cặp nào của cùng một phần tử chẵn lẻ phải vượt quá 1010.
Thuật toán
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
Giải thích
Các ước của 48:1, 2, 3, 4, 6, 8, 12, 16, 24. Tổng của chúng là 76.
Các ước của 75:1, 3, 5, 15, 25. Tổng của chúng là 49.
Sử dụng vòng lặp for và kiểm tra từng số bắt đầu từ 1 đến a-1.
Kiểm tra từng số trong vòng lặp nếu nó có thể chia số a hay không. Nếu có, hãy thêm số này vào aDivisorSum. Sau khi vòng lặp hoàn tất, aDivisorSum chứa tổng của tất cả các ước số cho a.
Tương tự, tìm tổng của tất cả các ước cho số thứ hai và lưu nó trong bDivisorSum.
Bây giờ hãy kiểm tra xem tổng các ước của một số có bằng số kia hay không bằng cách thêm một ước vào đó hay không. Nếu có, hãy in rằng cả hai đều là số Betrothed. Nếu không thì không.
Ví dụ
#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); } }
Đầu ra
48 and 75 are not Betrothed numbers