কম্পিউটার

C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল


কিছু উপাদান সহ একটি পূর্ণসংখ্যা অ্যারে অ্যারে[] দেওয়া, কাজটি হল সেই সংখ্যার সমস্ত মৌলিক সংখ্যার গুণফল বের করা।

মৌলিক সংখ্যা হল সেই সংখ্যাগুলি যেগুলিকে হয় 1 দ্বারা ভাগ করা হয় অথবা সংখ্যাটি নিজেই, অথবা একটি মৌলিক সংখ্যা এমন একটি সংখ্যা যা 1 এবং সংখ্যাটি ছাড়া অন্য কোন সংখ্যা দ্বারা বিভাজ্য নয়। যেমন 1, 2, 3, 5, 7, 11, ইত্যাদি।

আমাদের প্রদত্ত অ্যারের জন্য সমাধান খুঁজে বের করতে হবে −

C++ এ একটি অ্যারেতে সমস্ত মৌলিক সংখ্যার গুণফল

ইনপুট −arr[] ={ 11, 20, 31, 4, 5, 6, 70 }

আউটপুট − 1705

ব্যাখ্যা − অ্যারেতে প্রাইম সংখ্যা হল − 11, 31, 5 তাদের গুণফল হল 1705

ইনপুট − arr[] ={ 1, 2, 3, 4, 5, 6, 7 }

আউটপুট − 210

ব্যাখ্যা − অ্যারেতে প্রাইম সংখ্যা হল − 1, 2, 3, 5, 7 তাদের গুণফল হল 210

সমস্যা সমাধানের জন্য নিচের পদ্ধতিটি ব্যবহার করা হয়েছে

  • ইনপুট অ্যারে arr[].

    নিন
  • প্রতিটি উপাদান লুপ করুন এবং এটি প্রাইম কিনা তা পরীক্ষা করুন৷

  • সমস্ত বর্তমান প্রাইমগুলিকে একটি অ্যারেতে উৎপন্ন করুন৷

  • পণ্যটি ফেরত দিন।

অ্যালগরিদম

Start
In function int prodprimearr(int arr[], int n)
   Step 1→ Declare and initialize max_val as max_val *max_element(arr, arr + n)
   Step 2→ Declare vector<bool> isprime(max_val + 1, true)
   Step 3→ Set isprime[0] and isprime[1] as false
   Step 4→ Loop For p = 2 and p * p <= max_val and p++
      If isprime[p] == true then,
         Loop For i = p * 2 and i <= max_val and i += p
            Set isprime[i] as false
   Step 5→ Set prod as 1
   Step 6→ For i = 0 and i < n and i++
      If isprime[arr[i]]
         Set prod = prod * arr[i]
   Step 6→ Return prod
In function int main(int argc, char const *argv[])
   Step 1→ Declare and initilalize arr[] = { 11, 20, 31, 4, 5, 6, 70 }
   Step 2→ Declare and initialize n = sizeof(arr) / sizeof(arr[0])
   Step 3→ Print the results of prodprimearr(arr, n)
Stop
এর ফলাফল প্রিন্ট করুন

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int prodprimearr(int arr[], int n){
   // To find the maximum value of an array
   int max_val = *max_element(arr, arr + n);
   // USE SIEVE TO FIND ALL PRIME NUMBERS LESS
   // THAN OR EQUAL TO max_val
   vector<bool> isprime(max_val + 1, true);
   isprime[0] = false;
   isprime[1] = false;
   for (int p = 2; p * p <= max_val; p++) {
      // If isprime[p] is not changed, then
      // it is a prime
      if (isprime[p] == true) {
         // Update all multiples of p
         for (int i = p * 2; i <= max_val; i += p)
            isprime[i] = false;
      }
   }
   // Product all primes in arr[]
   int prod = 1;
   for (int i = 0; i < n; i++)
      if (isprime[arr[i]])
         prod *= arr[i];
      return prod;
}
int main(int argc, char const *argv[]){
   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++ এ 1 থেকে n এর মধ্যে মৌলিক সংখ্যার গুণফল বের করুন

  2. C++-এ একটি সাজানো না করা অ্যারেতে k নিকটতম সংখ্যাগুলি খুঁজুন

  3. সংখ্যার বিন্যাসের গুণফলের প্রথম সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম

  4. STL ব্যবহার করে C++ এ অ্যারে পণ্য