कुछ तत्वों के साथ एक पूर्णांक सरणी arr[] को देखते हुए, कार्य उस संख्याओं की सभी अभाज्य संख्याओं का गुणनफल खोजना है।
अभाज्य संख्याएँ वे संख्याएँ होती हैं जिन्हें या तो 1 से या स्वयं संख्या से विभाजित किया जाता है, या एक अभाज्य संख्या एक ऐसी संख्या होती है जो 1 और स्वयं संख्या को छोड़कर किसी अन्य संख्या से विभाज्य नहीं होती है। जैसे 1, 2, 3, 5, 7, 11, इत्यादि।
हमें दिए गए सरणी के लिए समाधान खोजना होगा -

इनपुट −arr[] ={ 11, 20, 31, 4, 5, 6, 70 }
आउटपुट - 1705
स्पष्टीकरण − सरणी में अभाज्य संख्याएं − 11, 31, 5 हैं, उनका गुणनफल 1705 है
इनपुट - एआर [] ={ 1, 2, 3, 4, 5, 6, 7 }
आउटपुट - 210
स्पष्टीकरण − सरणी में अभाज्य संख्याएं हैं − 1, 2, 3, 5, 7 उनका गुणनफल 210
. हैसमस्या को हल करने के लिए नीचे उपयोग किया गया दृष्टिकोण इस प्रकार है
-
इनपुट ऐरे एरर [] लें।
-
प्रत्येक तत्व को लूप करें और जांचें कि यह अभाज्य है या नहीं।
-
सभी वर्तमान अभाज्य संख्याओं को एक सरणी में उत्पादित करें।
-
उत्पाद लौटाएं।
एल्गोरिदम
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