n प्राइम नंबर्स वाला एक ऐरे arr[n] और k दिया गया है; कार्य ऐरे में हर k-वें प्राइम नंबर का उत्पाद ढूंढना है।
जैसे, हमारे पास एक ऐरे arr[] = {3, 5, 7, 11} और k = 2 है तो हर k के बाद प्राइम नंबर यानी 5 और 11 हमें उनका उत्पाद ढूंढना होगा जो 5x11 = 55 होगा और परिणाम को आउटपुट के रूप में प्रिंट करना होगा।
प्राइम नंबर क्या हैं?
एक प्राइम नंबर एक प्राकृतिक संख्या है जिसे 1 या संख्या को छोड़कर किसी अन्य संख्या से विभाजित नहीं किया जा सकता। कुछ प्राइम नंबर हैं 2, 3, 5, 7, 11, 13 आदि।
उदाहरण
Input: arr[] = {3, 5, 7, 11, 13} k= 2
Output: 55
Explanation: ऐरे के हर 2nd तत्व 5 और 11 हैं; उनका उत्पाद 55 होगा
Input: arr[] = {5, 7, 13, 23, 31} k = 3
Output: 13
Explanation: ऐरे का हर 3rd तत्व 13 है तो आउटपुट 13 होगा।
उपरोक्त समस्या को हल करने के लिए हम जिस दृष्टिकोण का उपयोग करेंगे:
- n तत्वों का इनपुट ऐरे और k लें, हर k-वें तत्व का उत्पाद ढूंढने के लिए।
- प्राइम नंबर्स स्टोर करने के लिए एक सीव बनाएं।
- फिर हमें ऐरे को पार करना होगा और k-वां तत्व प्राप्त करना होगा और इसे उत्पाद वेरिएबल से पुनरावर्ती रूप से हर k-वें तत्व के लिए गुणा करना होगा।
- उत्पाद प्रिंट करें।
एल्गोरिदम
Start
Step 1-> MAX 1000000 परिभाषित और प्रारंभ करें
Step 2-> bool prime[MAX + 1] परिभाषित करें
Step 3-> फंक्शन createsieve() में
Call memset(prime, true, sizeof(prime));
Set prime[1] = false
Set prime[0] = false
Loop For p = 2 and p * p <= MAX and p++
If prime[p] == true then,
For i = p * 2 and i <= MAX and i += p
Set prime[i] = false
Step 4-> void productOfKthPrimes(int arr[], int n, int k)
Set c = 0
Set product = 1
Loop For i = 0 and i < n and i++
If prime[arr[i]] then,
Increment c by 1
If c % k == 0 {
Set product = product * arr[i]
Set c = 0
Print the product
Step 5-> फंक्शन main() में
Call function createsieve()
Set n = 5, k = 2
Set arr[n] = { 2, 3, 11, 13, 23 }
Call productOfKthPrimes(arr, n, k)
Stop
उदाहरण
#include <bits/stdc++.h>
using namespace std;
#define MAX 1000000
bool prime[MAX + 1];
void createsieve() {
memset(prime, true, sizeof(prime));
// 0 और 1 प्राइम नंबर नहीं हैं
prime[1] = false;
prime[0] = false;
for (int p = 2; p * p <= MAX; p++) {
if (prime[p] == true) {
// p के सभी गुणक ढूंढना
for (int i = p * 2; i <= MAX; i += p)
prime[i] = false;
}
}
}
// उत्तर की गणना करें
void productOfKthPrimes(int arr[], int n, int k) {
// प्राइम्स की संख्या गिनें
int c = 0;
// प्राइम्स का उत्पाद ढूंढें
long long int product = 1;
// ऐरे को पार करें
for (int i = 0; i < n; i++) {
// यदि संख्या प्राइम है
if (prime[arr[i]]) {
c++;
if (c % k == 0) {
product *= arr[i];
c = 0;
}
}
}
cout << product << endl;
}
// मुख्य ब्लॉक
int main() {
// सीव बनाएं
createsieve();
int n = 5, k = 2;
int arr[n] = { 2, 3, 11, 13, 23 };
productOfKthPrimes(arr, n, k);
return 0;
}
आउटपुट
39