# Find the sum of all Betrothed numbers up to N

• Last Updated : 09 Aug, 2022

Given a number N, the task is to find the sum of the all Betrothed numbers up to N.

Let, A and B are a Betrothed number pair, then the sum of the proper divisors of A is equal to B+1 and the sum of the proper divisors of B is equal to A+1.

Examples:

Input: 78
Output: 123
Explanation: 48 and 75 is the only pair of Betrothed Numbers upto 78.

Input:
Output:
Explanation: There is no pair of Betrothed Numbers up to 50.

Approach:

• Initialise the array to store all Betrothed numbers upto to N
• Find the Betrothed numbers using sum of all its proper divisors and store the pair in the array.
• Then find the sum all the numbers less than and equal to N.
• The resultant sum is the required value.

Below code is the implementation of the above approach:

## C++

 `// C++ program to find the sum of the   ` `// all betrothed numbers up to N ` `#include` `using` `namespace` `std;`   `// Function to find the sum of ` `// the all betrothed numbers ` `int` `Betrothed_Sum(``int` `n)` `{` `    ``// To store the betrothed ` `    ``// numbers ` `    ``vector<``int` `> Set;` `    `  `    ``for``(``int` `number_1 = 1; number_1 < n; ` `                            ``number_1++)` `    ``{` `        `  `       ``// Calculate sum of ` `       ``// number_1's divisors ` `       ``// 1 is always a divisor` `       ``int` `sum_divisor_1 = 1;` `       `  `       ``// i = 2 because we don't ` `       ``// want to include ` `       ``// 1 as a divisor. ` `       ``int` `i = 2;` `       `  `       ``while` `(i * i <= number_1)` `       ``{` `           ``if` `(number_1 % i == 0)` `           ``{` `               ``sum_divisor_1 = sum_divisor_1 + i;` `               `  `               ``if` `(i * i != number_1)` `                   ``sum_divisor_1 += number_1 / i; ` `           ``}` `           ``i ++;` `       ``}` `       ``if` `(sum_divisor_1 > number_1)` `       ``{` `           ``int` `number_2 = sum_divisor_1 - 1;` `           ``int` `sum_divisor_2 = 1;` `           ``int` `j = 2;` `           `  `           ``while` `(j * j <= number_2) ` `           ``{` `               ``if` `(number_2 % j == 0) ` `               ``{` `                   ``sum_divisor_2 += j;` `                   ``if` `(j * j != number_2)` `                       ``sum_divisor_2 += number_2 / j;` `               ``}` `               ``j = j + 1;` `           ``}` `           ``if` `(sum_divisor_2 == number_1 + 1 and ` `               ``number_1 <= n && number_2 <= n)` `           ``{` `               ``Set.push_back(number_1);` `               ``Set.push_back(number_2);` `           ``}` `       ``}` `    ``}` `    `  `    ``// Sum all betrothed ` `    ``// numbers up to N ` `    ``int` `Summ = 0;` `    ``for``(``auto` `i : Set)` `    ``{` `       ``if``(i <= n) ` `          ``Summ += i;` `    ``}` `    ``return` `Summ;` `}`   `// Driver code ` `int` `main()` `{` `    ``int` `n = 78;` `    `  `    ``cout << Betrothed_Sum(n);` `    ``return` `0;` `}`   `// This code is contributed by ishayadav181`

## Java

 `// Java program to find the sum` `// of the all betrothed numbers` `// up to N  ` `import` `java.util.*;`   `class` `GFG{` `    `  `// Function to find the sum of  ` `// the all betrothed numbers  ` `public` `static` `int` `Betrothed_Sum(``int` `n) ` `{ ` `    `  `    ``// To store the betrothed  ` `    ``// numbers  ` `    ``Vector Set = ``new` `Vector(); ` `      `  `    ``for``(``int` `number_1 = ``1``; ` `            ``number_1 < n;  ` `            ``number_1++) ` `    ``{ ` `        `  `       ``// Calculate sum of  ` `       ``// number_1's divisors  ` `       ``// 1 is always a divisor ` `       ``int` `sum_divisor_1 = ``1``; ` `         `  `       ``// i = 2 because we don't  ` `       ``// want to include  ` `       ``// 1 as a divisor.  ` `       ``int` `i = ``2``; ` `         `  `       ``while` `(i * i <= number_1) ` `       ``{ ` `           ``if` `(number_1 % i == ``0``) ` `           ``{ ` `               ``sum_divisor_1 = sum_divisor_1 + i; ` `                 `  `               ``if` `(i * i != number_1) ` `                   ``sum_divisor_1 += number_1 / i;  ` `           ``} ` `           ``i ++; ` `       ``} ` `       `  `       ``if` `(sum_divisor_1 > number_1) ` `       ``{ ` `           ``int` `number_2 = sum_divisor_1 - ``1``; ` `           ``int` `sum_divisor_2 = ``1``; ` `           ``int` `j = ``2``; ` `             `  `           ``while` `(j * j <= number_2)  ` `           ``{ ` `               ``if` `(number_2 % j == ``0``)  ` `               ``{ ` `                   ``sum_divisor_2 += j; ` `                   `  `                   ``if` `(j * j != number_2) ` `                       ``sum_divisor_2 += number_2 / j; ` `               ``} ` `               ``j = j + ``1``; ` `           ``} ` `           ``if` `(sum_divisor_2 == number_1 + ``1` `&&  ` `               ``number_1 <= n && number_2 <= n) ` `           ``{ ` `               ``Set.add(number_1); ` `               ``Set.add(number_2); ` `           ``} ` `       ``} ` `    ``} ` `      `  `    ``// Sum all betrothed  ` `    ``// numbers up to N  ` `    ``int` `Summ = ``0``; ` `    ``for``(``int` `i = ``0``; i < Set.size(); i++) ` `    ``{ ` `       ``if` `(Set.get(i) <= n)  ` `          ``Summ += Set.get(i); ` `    ``} ` `    ``return` `Summ; ` `} `   `// Driver code` `public` `static` `void` `main(String[] args) ` `{` `    ``int` `n = ``78``; ` `    `  `    ``System.out.println(Betrothed_Sum(n));` `}` `}`   `// This code is contributed by divyeshrabadiya07`

## Python3

 `# Python3 program to find the ` `# Sum of the all Betrothed ` `# numbers up to N`   `import` `math`   `# Function to find the Sum of` `# the all Betrothed numbers` `def` `Betrothed_Sum(n):` `    `  `    ``# To store the Betrothed ` `    ``# numbers` `    ``Set` `=` `[]`   `    ``for` `number_1 ``in` `range``(``1``, n):`   `        ``# Calculate sum of ` `        ``# number_1's divisors`   `        ``# 1 is always a divisor` `        ``sum_divisor_1 ``=` `1`   `        ``# i = 2 because we don't` `        ``# want to include` `        ``# 1 as a divisor.` `        ``i ``=` `2`   `        ``while` `i ``*` `i <``=` `number_1:` `            ``if` `(number_1 ``%` `i ``=``=` `0``):` `                ``sum_divisor_1 ``=` `sum_divisor_1 ``+` `i`   `                ``if` `(i ``*` `i !``=` `number_1):` `                    ``sum_divisor_1 ``+``=` `number_1 ``/``/` `i` `            ``i ``=` `i ``+` `1`   `        ``if` `(sum_divisor_1 > number_1):`   `            ``number_2 ``=` `sum_divisor_1 ``-` `1` `            ``sum_divisor_2 ``=` `1` `            ``j ``=` `2` `            ``while` `j ``*` `j <``=` `number_2:` `                ``if` `(number_2 ``%` `j ``=``=` `0``):` `                    ``sum_divisor_2 ``+``=` `j` `                    ``if` `(j ``*` `j !``=` `number_2):` `                        ``sum_divisor_2 ``+``=` `number_2 ``/``/` `j` `                ``j ``=` `j ``+` `1`   `            ``if` `(sum_divisor_2 ``=``=` `number_1 ``+` `1` `                ``and` `number_1<``=` `n ``and` `number_2<``=` `n):` `                ``Set``.append(number_1)` `                ``Set``.append(number_2)`   `    ``# Sum all Betrothed` `    ``# numbers up to N` `    ``Summ ``=` `0` `    ``for` `i ``in` `Set``:` `        ``if` `i <``=` `n:` `            ``Summ ``+``=` `i` `    ``return` `Summ`     `# Driver Code` `n ``=` `78` `print``(Betrothed_Sum(n))`

## C#

 `// C# program to find the sum` `// of the all betrothed numbers` `// up to N  ` `using` `System;` `using` `System.Collections;`   `class` `GFG{` `    `  `// Function to find the sum of  ` `// the all betrothed numbers  ` `public` `static` `int` `Betrothed_Sum(``int` `n) ` `{ ` `    `  `    ``// To store the betrothed  ` `    ``// numbers  ` `    ``ArrayList ``set` `= ``new` `ArrayList(); ` `       `  `    ``for``(``int` `number_1 = 1; ` `            ``number_1 < n;  ` `            ``number_1++) ` `    ``{ ` `        `  `        ``// Calculate sum of  ` `        ``// number_1's divisors  ` `        ``// 1 is always a divisor ` `        ``int` `sum_divisor_1 = 1; ` `        `  `        ``// i = 2 because we don't  ` `        ``// want to include  ` `        ``// 1 as a divisor.  ` `        ``int` `i = 2; ` `        `  `        ``while` `(i * i <= number_1) ` `        ``{ ` `            ``if` `(number_1 % i == 0) ` `            ``{ ` `                ``sum_divisor_1 = sum_divisor_1 + i; ` `                `  `                ``if` `(i * i != number_1) ` `                    ``sum_divisor_1 += number_1 / i;  ` `            ``} ` `            ``i ++; ` `        ``} ` `        `  `        ``if` `(sum_divisor_1 > number_1) ` `        ``{ ` `            ``int` `number_2 = sum_divisor_1 - 1; ` `            ``int` `sum_divisor_2 = 1; ` `            ``int` `j = 2; ` `            `  `            ``while` `(j * j <= number_2)  ` `            ``{ ` `                ``if` `(number_2 % j == 0)  ` `                ``{ ` `                    ``sum_divisor_2 += j; ` `                    `  `                    ``if` `(j * j != number_2) ` `                        ``sum_divisor_2 += number_2 / j; ` `                ``} ` `                ``j = j + 1; ` `            ``} ` `            `  `            ``if` `(sum_divisor_2 == number_1 + 1 &&  ` `                ``number_1 <= n && number_2 <= n) ` `            ``{ ` `                ``set``.Add(number_1); ` `                ``set``.Add(number_2); ` `            ``} ` `        ``} ` `    ``} ` `       `  `    ``// Sum all betrothed  ` `    ``// numbers up to N  ` `    ``int` `Summ = 0; ` `    ``for``(``int` `i = 0; i < ``set``.Count; i++) ` `    ``{ ` `        ``if` `((``int``)``set``[i] <= n)  ` `            ``Summ += (``int``)``set``[i]; ` `    ``} ` `    ``return` `Summ; ` `}`   `// Driver code` `static` `public` `void` `Main()` `{` `    ``int` `n = 78; ` `     `  `    ``Console.WriteLine(Betrothed_Sum(n));` `}` `}`   `// This code is contributed by offbeat`

## Javascript

 ``

Output:

`123`

Time Complexity: O(N * sqrt(N))

Auxiliary Space: O(n)

My Personal Notes arrow_drop_up
Related Articles