समस्या कथन
n पॉजिटिव इंटीजर्स की एक लिंक्ड लिस्ट दी गई है। हमें न्यूनतम और अधिकतम मान वाली अभाज्य संख्या ढूंढनी है।
यदि दी गई लिस्ट है -
10 -> 4 -> 1 -> 12 -> 13 -> 7 -> 6 -> 2 -> 27 -> 33 तो न्यूनतम अभाज्य संख्या 2 है और अधिकतम अभाज्य संख्या 13 है
एल्गोरिदम
1. दी गई संख्या से अधिकतम नंबर ढूंढें। इसे maxNumber कहें 2. 1 से maxNumber तक अभाज्य संख्याएं जेनरेट करें और उन्हें डायनामिक ऐरे में स्टोर करें 3. लिंक्ड लिस्ट पर इटरेट करें और डायनामिक ऐरे का उपयोग करके न्यूनतम और अधिकतम मान वाली अभाज्य संख्या ढूंढें
उदाहरण
#include <iostream> #include <vector> #include <climits> #include <algorithm> #include <list> #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; void printMinAndMaxPrimes(list<int> intList){ int maxNumber = *max_element(intList.begin(), intList.end()); vector<bool> primes(maxNumber + 1, true); primes[0] = primes[1] = false; for (int p = 2; p * p <= maxNumber; ++p) { if (primes[p]) { for (int i = p * 2; i <= maxNumber; i +=p) { primes[i] = false; } } } int minPrime = INT_MAX; int maxPrime = INT_MIN; for (auto it = intList.begin(); it != intList.end(); ++it) { if (primes[*it]) { minPrime = min(minPrime, *it); maxPrime = max(maxPrime, *it); } } cout << "Prime number of min value = " << minPrime << "\n"; cout << "Prime number of max value = " << maxPrime << "\n"; } int main(){ int arr [] = {10, 4, 1, 12, 13, 7, 6, 2, 27, 33}; list<int> intList(arr, arr + SIZE(arr)); printMinAndMaxPrimes(intList); return 0; }आउटपुट
जब आप उपरोक्त प्रोग्राम को कंपाइल और एक्जीक्यूट करते हैं। यह निम्नलिखित आउटपुट जनरेट करता है -
Prime number of min value = 2 Prime number of max value = 13