उदाहरण
import java.util.*;
import java.lang.*;
public class Demo {
public static int factorSum(int num) {
if (num % 2 != 0)
return 0;
int result = 1;
for (int i = 2; i <= Math.sqrt(num); i++) {
int count = 0, currentSum = 1;
int currentTerm = 1;
while (num % i == 0) {
count++;
num = num / i;
if (i == 2 && count == 1)
currentSum = 0;
currentTerm *= i;
currentSum += currentTerm;
}
result *= currentSum;
}
if (num >= 2)
result *= (1 + num);
return result;
}
public static void main(String argc[]) {
int num = 36;
System.out.println("संख्या के सम गुणनखंडों का योग है: ");
System.out.println(factorSum(num));
}
}
आउटपुट
संख्या के सम गुणनखंडों का योग है 78
व्याख्या: Demo क्लास में 'factorSum' नामक एक फंक्शन होता है। यह फंक्शन एक संख्या के गुणनखंड ढूंढता है, और सम गुणनखंडों को जोड़ता है और इस मान को आउटपुट के रूप में लौटाता है। मुख्य फंक्शन में, वह संख्या जिसके सम गुणनखंड ढूंढने हैं, परिभाषित की जाती है, और इस संख्या पर फंक्शन को कॉल किया जाता है। प्रासंगिक संदेश कंसोल पर प्रदर्शित होता है।
गणितीय दृष्टिकोण:
यदि n = 2ᵃ × p₁ᵇ¹ × p₂ᵇ² × ... (अभाज्य गुणनखंडन)
सभी गुणनखंडों का योग = (2⁰+2¹+...+2ᵃ) × Π(pᵢ⁰+pᵢ¹+...+pᵢᵇⁱ)
सम गुणनखंडों का योग = (2¹+2²+...+2ᵃ) × Π(pᵢ⁰+pᵢ¹+...+pᵢᵇⁱ)
= (2^(a+1) - 2) × विषम_गुणनखंडों_का_योग
36 के लिए सत्यापन:
36 = 2² × 3²
सभी गुणनखंड: 1, 2, 3, 4, 6, 9, 12, 18, 36
सम गुणनखंड: 2, 4, 6, 12, 18, 36
योग = 2+4+6+12+18+36 = 78 ✓
सरलीकृत कार्यान्वयन:
public static int sumEvenFactors(int n) {
if (n % 2 != 0) return 0;
int sum = 0;
for (int i = 2; i <= n; i += 2) { // केवल सम संख्याएं जांचें
if (n % i == 0) sum += i;
}
return sum;
}
// अनुकूलित: sqrt(n) तक
public static int sumEvenFactorsOptimized(int n) {
if (n % 2 != 0) return 0;
int sum = 0;
for (int i = 2; i * i <= n; i += 2) {
if (n % i == 0) {
sum += i;
int pair = n / i;
if (pair != i && pair % 2 == 0) sum += pair;
}
}
// n स्वयं सम है तो जोड़ें
if (n % 2 == 0) sum += n;
return sum;
}
नोट: मूल कोड अभाज्य गुणनखंडन-आधारित फॉर्मूला का उपयोग करता है जो बड़ी संख्याओं के लिए अधिक कुशल है।