Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में संख्या के सम गुणनखंडों का योग (सरल दृष्टिकोण)


समस्या विवरण

इस खंड में हम देखेंगे कि हम किसी संख्या के सभी सम अभाज्य गुणनखंडों का योग कुशल तरीके से कैसे प्राप्त कर सकते हैं। मान लीजिए एक संख्या n = 480 है, हमें इसके सभी गुणनखंड प्राप्त करने हैं। 480 के अभाज्य गुणनखंड 2, 2, 2, 2, 2, 3, 5 हैं। सभी सम गुणनखंडों का योग 2+2+2+2+2 = 10 है।

नियम

  • जब संख्या 2 से विभाज्य हो, तो उन्हें योग में जोड़ें, और संख्या को बार-बार 2 से विभाजित करें
  • अब संख्या विषम होनी चाहिए। इसलिए हमें कोई गुणनखंड नहीं मिलेगा जो सम हो। फिर बस उन गुणनखंडों को अनदेखा करें

एल्गोरिदम

printPrimeFactors(n):
begin
    sum := 0
    while n is divisible by 2:
        sum := sum + 2
        n := n / 2
    done
end

उदाहरण

#include <iostream>
using namespace std;

int sumEvenFactors(int n) {
    int sum = 0;

    // केवल 2 से विभाज्य होने तक 2 जोड़ते रहें
    while(n % 2 == 0) {
        sum += 2;
        n = n / 2;  // 2 से विभाजित करके n को कम करें
    }

    return sum;
}

int main() {
    int n;
    cout << "Enter a number: ";
    cin >> n;
    cout << "Sum of all even prime factors: " << sumEvenFactors(n);
    return 0;
}

आउटपुट

Enter a number: 480
Sum of all even prime factors: 10

व्याख्या

480 = 2 × 2 × 2 × 2 × 2 × 3 × 5
सम अभाज्य गुणनखंड: 2, 2, 2, 2, 2 (पांच बार)
योग = 2 + 2 + 2 + 2 + 2 = 10

नोट: सम गुणनखंड बनाम सम अभाज्य गुणनखंड

मूल लेख में "सम गुणनखंड" (even factors) और "सम अभाज्य गुणनखंड" (even prime factors) में भ्रम है:

  • सम अभाज्य गुणनखंड: केवल अभाज्य संख्या 2 (एकमात्र सम अभाज्य) - उपरोक्त कोड यही करता है
  • सम गुणनखंड: सभी गुणनखंड जो सम हैं (2, 4, 6, 10, 12, 16, 20, 24, 30, 40, 48, 60, 80, 96, 120, 160, 240, 480)

सभी सम गुणनखंडों का योग (सही संस्करण)

long long sumAllEvenFactors(int n) {
    if (n % 2 != 0) return 0;

    long long sum = 0;
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            if (i % 2 == 0) sum += i;
            int pair = n / i;
            if (pair != i && pair % 2 == 0) sum += pair;
        }
    }
    if (n % 2 == 0) sum += n;  // n स्वयं भी गुणनखंड है
    return sum;
}

उदाहरण: n=12

गुणनखंड: 1, 2, 3, 4, 6, 12
सम गुणनखंड: 2, 4, 6, 12
योग = 24
  1. C++ प्रोग्राम किसी संख्या के विषम गुणनखंडों का योग ज्ञात करने के लिए C++ प्रोग्राम किसी संख्या के विषम गुणनखंडों का योग ज्ञात करने के लिए

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

  1. पायथन प्रोग्राम: किसी संख्या के सम गुणनखंडों का योग ज्ञात करें पायथन प्रोग्राम: किसी संख्या के सम गुणनखंडों का योग ज्ञात करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक संख्या दी गई है, हमें उस संख्या के सभी सम गुणनखंडों का योग प्रदर्शित करना है। दृष्टिकोण हम जांचते हैं कि क्या संख्या विषम है, तो कोई सम गुणनखंड नहीं हैं, इसलिए 0 वापस करें। यदि संख्या सम है, तो हम गणना के माध्यम से जाते हैं

  1. पायथन प्रोग्राम: संख्या के इवन फैक्टर्स का योग ढूंढें पायथन प्रोग्राम: संख्या के इवन फैक्टर्स का योग ढूंढें

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट एक नंबर इनपुट n दिए जाने पर, कार्य संख्या के इवन फैक्टर्स का योग निकालना है। यहां हमें पहले सभी ऑड फैक्टर्स को समाप्त करने की आवश्यकता है। यदि इनपुट नंबर ऑड है तो इसका कोई इवन फैक्टर नहीं है इसलिए सीधे