সংক্ষিপ্ত বিবরণ
এই প্রোগ্রামটি একটি ইন্টিজার অ্যারেতে থাকা প্রাইম নাম্বারগুলো থেকে সর্বনিম্ন ও সর্বোচ্চটি বের করে। সিভ অফ এরাটোস্থেনিস (Sieve) ব্যবহার করে প্রাইম চেক করা হয়।
অ্যালগরিদম
- অ্যারেতে সর্বোচ্চ মান বের করুন (maxNumber)
- Sieve of Eratosthenes দিয়ে ১ থেকে maxNumber পর্যন্ত প্রাইম চিহ্নিত করুন
- অ্যারে ট্রাভার্স করলে প্রাইমগুলোর মিন/ম্যাক্স আপডেট করুন
উদাহরণ
Array: {10, 4, 1, 12, 13, 7, 6, 2, 27, 33}
Min Prime = 2, Max Prime = 13
সি++ কোড
#include <bits/stdc++.h>
using namespace std;
void minMaxPrimes(int arr[], int n) {
int maxVal = *max_element(arr, arr+n);
vector isPrime(maxVal+1, true);
isPrime[0] = isPrime[1] = false;
for (int p = 2; p*p <= maxVal; p++)
if (isPrime[p])
for (int i = p*2; i <= maxVal; i += p)
isPrime[i] = false;
int minP = INT_MAX, maxP = INT_MIN;
for (int i = 0; i < n; i++)
if (isPrime[arr[i]]) {
minP = min(minP, arr[i]);
maxP = max(maxP, arr[i]);
}
cout << "Min Prime: " << minP << "\nMax Prime: " << maxP << "\n";
}
int main() {
int arr[] = {10, 4, 1, 12, 13, 7, 6, 2, 27, 33};
minMaxPrimes(arr, 10);
return 0;
}
আউটপুট
Min Prime: 2 Max Prime: 13