इस खंड में, हम देखेंगे कि किसी संख्या के सभी विषम अभाज्य गुणनखंडों का योग कुशल तरीके से कैसे प्राप्त करें। मान लीजिए एक संख्या n=1092 है, हमें इसके सभी गुणनखंड प्राप्त करने हैं। 1092 के अभाज्य गुणनखंड 2, 2, 3, 7, 13 हैं। सभी विषम गुणनखंडों का योग 3+7+13 = 23 है। इस समस्या को हल करने के लिए, हमें इस नियम का पालन करना होगा:
- जब संख्या 2 से विभाज्य हो, तो उस गुणनखंड को अनदेखा करें, और संख्या को 2 से बार-बार विभाजित करें।
- अब संख्या विषम होनी चाहिए। अब 3 से संख्या के वर्गमूल तक, यदि संख्या वर्तमान मान से विभाज्य है, तो योग में गुणनखंड जोड़ें, और संख्या को वर्तमान संख्या से विभाजित करके बदलें फिर जारी रखें।
- अंत में, शेष संख्या भी जुड़ जाएगी यदि शेष संख्या विषम है।
एल्गोरिदम
printPrimeFactors(n):
sum := 0
while n 2 से विभाज्य है, करें
n := n / 2
किया
for i := 3 से √n तक, i को 2 से बढ़ाते हुए, करें
while n i से विभाज्य है, करें
sum := sum + i
n := n / i
किया
किया
if n > 2, तो
if n विषम है, तो sum := sum + n
end if
end
C++ उदाहरण
#include <iostream>
#include <cmath>
using namespace std;
int sumOddFactors(int n) {
int i, sum = 0;
while (n % 2 == 0) n = n / 2;
for (i = 3; i <= sqrt(n); i += 2) {
while (n % i == 0) {
sum += i;
n = n / i;
}
}
if (n > 2 && n % 2 == 1) sum += n;
return sum;
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "Sum of all odd prime factors: " << sumOddFactors(n);
return 0;
}
आउटपुट
Enter a number: 1092 Sum of all odd prime factors: 23