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

C++ में ऐरे में सभी अभाज्य संख्याओं का गुणनफल


कुछ एलिमेंट्स के साथ एक इंटीजर ऐरे arr[] दिया गया है, कार्य उस ऐरे की सभी अभाज्य संख्याओं का गुणनफल निकालना है।

अभाज्य संख्याएं वे संख्याएं होती हैं जो या तो 1 से विभाज्य होती हैं या स्वयं संख्या से, या एक अभाज्य संख्या वह संख्या है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख्या से विभाज्य नहीं होती। जैसे 2, 3, 5, 7, 11, आदि। (नोट: 1 अभाज्य संख्या नहीं है)

हमें दिए गए ऐरे के लिए समाधान ढूंढना है:

इनपुट - arr[] = {11, 20, 31, 4, 5, 6, 70}

आउटपुट - 1705

व्याख्या - ऐरे में अभाज्य संख्याएं हैं: 11, 31, 5 उनका गुणनफल 1705 है

इनपुट - arr[] = {1, 2, 3, 4, 5, 6, 7}

आउटपुट - 210

व्याख्या - ऐरे में अभाज्य संख्याएं हैं: 2, 3, 5, 7 उनका गुणनफल 210 है (नोट: 1 अभाज्य नहीं है)

समस्या को हल करने के लिए नीचे दिया गया दृष्टिकोण

  • इनपुट ऐरे arr[] लें।
  • प्रत्येक एलिमेंट को लूप करें और जांचें कि यह अभाज्य है या नहीं।
  • ऐरे में मौजूद सभी अभाज्य संख्याओं का गुणनफल करें।
  • गुणनफल रिटर्न करें।

एल्गोरिदम

Start
In function int prodprimearr(int arr[], int n)
    Step 1→ ऐरे के अधिकतम मान को max_val के रूप में घोषित और इनिशियलाइज़ करें
    Step 2→ max_val + 1 आकार का vector isprime घोषित करें, सभी true से इनिशियलाइज़
    Step 3→ isprime[0] और isprime[1] को false सेट करें
    Step 4→ p = 2 से p*p <= max_val तक लूप, p++
        यदि isprime[p] == true तो,
            i = p*2 से i <= max_val तक लूप, i += p
                isprime[i] को false सेट करें
    Step 5→ prod को 1 सेट करें
    Step 6→ i = 0 से i < n तक लूप, i++
        यदि isprime[arr[i]] तो
            prod = prod * arr[i]
    Step 7→ prod रिटर्न करें

In function int main()
    Step 1→ arr[] = {11, 20, 31, 4, 5, 6, 70} घोषित और इनिशियलाइज़ करें
    Step 2→ n = sizeof(arr)/sizeof(arr[0]) घोषित और इनिशियलाइज़ करें
    Step 3→ prodprimearr(arr, n) के परिणाम प्रिंट करें
Stop

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int prodprimearr(int arr[], int n) {
    // ऐरे के अधिकतम मान को खोजने के लिए
    int max_val = *max_element(arr, arr + n);
    
    // SIEVE का उपयोग करके max_val से कम या बराबर सभी अभाज्य संख्याएं खोजें
    vector<bool> isprime(max_val + 1, true);
    isprime[0] = false;
    isprime[1] = false;
    
    for (int p = 2; p * p <= max_val; p++) {
        // यदि isprime[p] बदला नहीं गया, तो यह एक अभाज्य संख्या है
        if (isprime[p] == true) {
            // p के सभी गुणकों को अपडेट करें
            for (int i = p * 2; i <= max_val; i += p)
                isprime[i] = false;
        }
    }
    
    // arr[] में सभी अभाज्य संख्याओं का गुणनफल
    int prod = 1;
    for (int i = 0; i < n; i++)
        if (isprime[arr[i]])
            prod *= arr[i];
    
    return prod;
}

int main() {
    int arr[] = {11, 20, 31, 4, 5, 6, 70};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << prodprimearr(arr, n);
    return 0;
}

आउटपुट

1705

  1. - C++ प्रोग्राम: अनसॉर्टेड सरणी में k निकटतम संख्याएं ज्ञात करना

    मान लें हमारे पास कुछ तत्वों के साथ एक सरणी A है। सरणी अनसॉर्टेड है। हमारे पास दो अन्य मान X और k हैं। हमारा कार्य सरणी A से X की k निकटतम तत्वों की संख्या ज्ञात करना है। यदि तत्व X सरणी में मौजूद है, तो यह आउटपुट में नहीं दिखाया जाएगा। यदि A = [48, 50, 55, 30, 39, 35, 42, 45, 12, 16, 53, 22, 56] और

  1. - C++ प्रोग्राम: संख्याओं के एरे के गुणनफल का पहला अंक ज्ञात करना

    इस लेख में, हम एक प्रोग्राम पर चर्चा करेंगे जो दिए गए एरे के तत्वों के गुणनफल का पहला अंक ज्ञात करता है। उदाहरण के लिए, मान लीजिए हमें एक एरे दिया गया है। arr = {12, 5, 16} तो इन तत्वों का गुणनफल 12*5*16 = 960 होगा। इसलिए, इस मामले में परिणाम यानी गुणनफल का पहला अंक 9 होगा। उदाहरण #include <bits

  1. - C++ STL का उपयोग करके ऐरे का गुणनफल

    यह ऐरे गुणनफल ज्ञात करने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin ऐरे के मान इनिशियलाइज़ करें। ऐरे का गुणनफल लौटाने के लिए उपयोगकर्ता परिभाषित फंक्शन accumulate को कॉल करें। समाधान प्रिंट करें। End. उदाहरण कोड #include <iostream> #include <numeric> using names