एक धनात्मक पूर्णांक दिया गया है और कार्य उस संख्या के विषम गुणनखंडों को उत्पन्न करना और दिए गए विषम गुणनखंडों का योग निकालना है।
उदाहरण
इनपुट: संख्या = 20 आउटपुट: विषम गुणनखंडों का योग है: 6 इनपुट: संख्या = 18 आउटपुट: विषम गुणनखंडों का योग है: 13

तो, परिणाम = 1 + 5 = 6
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण निम्नानुसार है -
- उस संख्या को इनपुट करें जिसके विषम गुणनखंडों का योग निकालना है
- अंक 0 और 2 को अनदेखा करें क्योंकि दोनों सम अंक हैं और अंक 1 को स्टोर करें क्योंकि यह एक विषम अंक है
- लूप को 3 से संख्या के वर्गमूल तक शुरू करें
- तब तक ट्रैवर्स करें जब तक संख्या % i 0 लौटाता है और संख्या को i के मान से विभाजित करते रहें
- लूप में टेम्पररी वेरिएबल का मान temp = temp * i सेट करते रहें
- total को total + temp पर सेट करें
- अंतिम res वेरिएबल का मान लौटाएं और परिणाम प्रिंट करें
एल्गोरिदम
शुरुआत
चरण 1: विषम गुणनखंडों का योग गणना करने के लिए फंक्शन घोषित करें
int sum(int num)
int res = 1 घोषित करें
लूप: जब तक (num % 2 == 0)
num = num / 2 सेट करें
अंत
लूप: int i = 3 से i <= sqrt(num) तक i++
int count = 0 और total = 1 घोषित करें
int temp = 1 घोषित करें
लूप: जब तक (num % i == 0)
count++
num = num / i सेट करें
temp *= i सेट करें
total += temp सेट करें
अंत
res = res * total सेट करें
अंत
यदि (num >= 2)
res *= (1 + num) सेट करें
अंत
res लौटाएं
चरण 2: main() में
int num = 20 घोषित करें
sum(num) कॉल करें
रुकें उदाहरण
#include <bits/stdc++.h>
using namespace std;
// विषम गुणनखंडों का योग गणना करना
int sum(int num) {
int res = 1;
while (num % 2 == 0)
num = num / 2;
for (int i = 3; i <= sqrt(num); i++) {
int count = 0, total = 1;
int temp = 1;
while (num % i == 0) {
count++;
num = num / i;
temp *= i;
total += temp;
}
res = res * total;
}
if (num >= 2)
res *= (1 + num);
return res;
}
int main() {
int num = 20;
cout << "sum of odd factors is: ";
cout << sum(num);
return 0;
} आउटपुट
sum of odd factors is: 6