इस समस्या में, हमें एक प्राकृतिक संख्या N दी गई है। हमारा कार्य प्राकृतिक संख्या के सभी भाजकों के भाजकों का योग ज्ञात करना है।
उदाहरण से समझते हैं:
इनपुट: N = 12 आउटपुट: 55
व्याख्या:
12 के भाजक हैं: 1, 2, 3, 4, 6, 12 भाजकों का योग = (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 का गुणनखंडन (factorisation) उपयोग करना है। अभाज्य गुणनखंडन का उपयोग करके, हम सभी भाजकों के भाजकों का योग ज्ञात कर सकते हैं। यहां, हम प्रत्येक तत्व का अभाज्य गुणनखंडन ज्ञात करेंगे।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम:
#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