n संख्या के इंटीजर्स के साथ एक ऐरे arr[n] दिया गया है, कार्य ऐरे में सभी सम्मिश्र संख्याओं का गुणनफल निकालना है।
सम्मिश्र संख्याएं वे पूर्ण संख्याएं होती हैं जो 2 अन्य पूर्ण संख्याओं को गुणा करके बनती हैं। उदाहरण के लिए 6 एक सम्मिश्र संख्या है जिसे 2 और 3 को गुणा करके बनाया जा सकता है जो पूर्ण संख्याएं हैं। यह भी कहा जा सकता है कि वे अभाज्य नहीं हैं। (नोट: 1 न तो अभाज्य है न सम्मिश्र)
इनपुट
arr[] = {1, 2, 4, 5, 6, 7}
आउटपुट
24
व्याख्या - ऐरे में सम्मिश्र संख्याएं 4 और 6 हैं और उनका गुणनफल 24 है।
इनपुट
arr[] = {10, 2, 4, 5, 6, 11}
आउटपुट
240
व्याख्या - ऐरे में सम्मिश्र संख्याएं 10, 4, 6 हैं और उनका गुणनफल 240 है।
समस्या को हल करने के लिए नीचे दिया गया दृष्टिकोण
- ऐरे के प्रत्येक एलिमेंट को पुनरावृत्त करें।
- गैर-अभाज्य या सम्मिश्र संख्याएं ढूंढें, यानी 1 को छोड़कर किसी अन्य संख्या से विभाज्य।
- सभी सम्मिश्र संख्याओं को गुणा करें।
- परिणाम रिटर्न करें।
एल्गोरिदम
Start
Step 1→ ऐरे में सम्मिश्र संख्याओं के गुणनफल को खोजने के लिए फंक्शन घोषित करें
int product_arr(int arr[], int size)
int max = *max_element(arr, arr + size) घोषित करें
vector prime(max + 1, true) सेट करें
prime[0] = true सेट करें
prime[1] = true सेट करें
Loop for int i = 2 to i*i <= max, i++
IF (prime[i] == true)
Loop for int j = i*2 to j <= max, j += i
prime[j] = false सेट करें
int product = 1 सेट करें
Loop for int i = 0 to i < size, i++
IF (!prime[arr[i]])
product *= arr[i] सेट करें
return product
Stop
उदाहरण
#include <bits/stdc++.h>
using namespace std;
// ऐरे में सम्मिश्र संख्याओं के गुणनफल को खोजने का फंक्शन
int product_arr(int arr[], int size) {
int max = *max_element(arr, arr + size);
vector<bool> prime(max + 1, true);
prime[0] = true;
prime[1] = true;
for (int i = 2; i * i <= max; i++) {
if (prime[i] == true) {
for (int j = i * 2; j <= max; j += i)
prime[j] = false;
}
}
int product = 1;
for (int i = 0; i < size; i++)
if (!prime[arr[i]]) {
product *= arr[i];
}
return product;
}
int main() {
int arr[] = {2, 4, 6, 8, 10};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Product of composite numbers in array: " << product_arr(arr, size);
return 0;
}
आउटपुट
Product of composite numbers in array: 1920