কিছু উপাদান সহ একটি পূর্ণসংখ্যা অ্যারে অ্যারে[] দেওয়া, কাজটি হল সেই সংখ্যার সমস্ত মৌলিক সংখ্যার গুণফল বের করা।
মৌলিক সংখ্যা হল সেই সংখ্যাগুলি যেগুলিকে হয় 1 দ্বারা ভাগ করা হয় অথবা সংখ্যাটি নিজেই, অথবা একটি মৌলিক সংখ্যা এমন একটি সংখ্যা যা 1 এবং সংখ্যাটি ছাড়া অন্য কোন সংখ্যা দ্বারা বিভাজ্য নয়। যেমন 1, 2, 3, 5, 7, 11, ইত্যাদি।
আমাদের প্রদত্ত অ্যারের জন্য সমাধান খুঁজে বের করতে হবে −
ইনপুট −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