यहाँ हम बेट्रोथेड नंबर देखेंगे। यह संख्याओं का ऐसा युग्म है कि एक संख्या के उचित भाजक का योग दूसरी संख्या से एक अधिक होता है। हमें इन जोड़ियों को ढूंढना है
उदाहरण के लिए, जोड़ी (48, 75) की तरह है। तो 48 का भाजक {1, 2, 3, 4, 6, 8, 12, 16, 24} है और योग 76 है। इसी तरह, 75 का भाजक {1, 3, 5, 15, 25} है तो योगफल 49 है।
एल्गोरिदम
BetrothedPairs (n) -
begin for num in range 1 to n, do sum := 1 for i in range 2 to num, do if num is divisible by i, then sum := sum + i if i * i is not same as num, then sum := sum + num / i end if end if if sum > num, then num2 := sum – 1 sum2 := 1 for j in range 2 to num2, do if num2 is divisible by j, then sum2 := sum2 + j if j * j is not same as num2, then sum2 := sum2 + num2 / j end if end if done if sum2 = num + 1, then print the pair num and num2 end if end if done done end
उदाहरण
#include <iostream> using namespace std; void BetrothedPairs(int n) { for (int num = 1; num < n; num++) { int sum = 1; for (int i = 2; i * i <= num; i++) { //go through each number to get proper divisor if (num % i == 0) { sum += i; if (i * i != num) //avoid to include same divisor twice sum += num / i; } } if (sum > num) { int num2 = sum - 1; int sum2 = 1; for (int j = 2; j * j <= num2; j++){ if (num2 % j == 0) { sum2 += j; if (j * j != num2) sum2 += num2 / j; } } if (sum2 == num+1) cout << "(" << num << ", " << num2 <<")" << endl; } } } int main() { int n = 5000; BetrothedPairs(n); }
आउटपुट
1