मान लीजिए हमारे पास एक नंबर है। हमें इसे दो प्रचुर संख्या के योग के रूप में व्यक्त करना है, यदि हाँ, तो संख्याओं को प्रिंट करें, अन्यथा -1 को प्रिंट करें। एक संख्या को प्रचुर संख्या कहा जाता है, संख्या के सभी उचित भाजक का योग होता है, जिसे योग (एन) द्वारा दर्शाया जाता है, संख्या के मूल्य से अधिक होता है।
इसे हल करने के लिए, हम सभी प्रचुर संख्याओं को एक सेट में संग्रहीत करेंगे, और दी गई संख्या n के लिए, i =1 से n के लिए एक लूप चलाएँ, और जाँचें कि n और (n - i) प्रचुर मात्रा में हैं या नहीं।
उदाहरण
#include <iostream>
#include <set>
#define N 100005
using namespace std;
set<int> getAbundantSet() {
set<int> abundant_set;
for (int i = 1; i < N; i++) {
int sum = 1;
for (int j = 2; j * j <= i; j++) {
if (i % j == 0) {
sum += j;
if (i / j != j)
sum += i / j;
}
}
if (sum > i)
abundant_set.insert(i);
}
return abundant_set;
}
void representSumAbundant(int number){
set<int> abundant_set = getAbundantSet();
for (int i = 1; i <= number; i++) {
if (abundant_set.count(i) && abundant_set.count(number - i)) {
cout << i << " " << number - i;
return;
}
}
cout << -1;
}
int main() {
int n = 30;
representSumAbundant(n);
} आउटपुट
12 18