इस समस्या में, हमें एक प्राकृत संख्या N दी जाती है। हमारा कार्य एक प्राकृत संख्या के सभी भाजक के योगफल ज्ञात करना है। ।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : N = 12 Output : 55
स्पष्टीकरण -
The divisors of 12 are 1, 2, 3, 4, 6, 12 Sum of divisors = (1) + (1 + 2) + (1 + 3) + (1 + 2 + 4) + (1 + 2 + 3 + 6) + (1 + 2 + 3 + 4 + 6 + 12) = 1 + 3 + 4 + 7 + 12 + 28 = 55
समाधान दृष्टिकोण
समस्या का एक सरल समाधान N के गुणनखंड का उपयोग करना है। अभाज्य गुणनखंड का उपयोग करके, हम सभी भाजक के भाजक का योग ज्ञात कर सकते हैं। यहां, हम प्रत्येक तत्व का अभाज्य गुणनखंडन पाएंगे।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include<bits/stdc++.h> using namespace std; int findSumOfDivisorsOfDivisors(int n) { map<int, int> factorCount; for (int j=2; j<=sqrt(n); j++) { int count = 0; while (n%j == 0) { n /= j; count++; } if (count) factorCount[j] = count; } if (n != 1) factorCount[n] = 1; int sumOfDiv = 1; for (auto it : factorCount) { int power = 1; int sum = 0; for (int i=it.second+1; i>=1; i--) { sum += (i*power); power *= it.first; } sumOfDiv *= sum; } return sumOfDiv; } int main() { int n = 12; cout<<"The sum of divisors of all divisors is "<<findSumOfDivisorsOfDivisors(n); return 0; }
आउटपुट
The sum of divisors of all divisors is 55