দুটি অ্যারে দেওয়া থাকলে, প্রথম অ্যারে থেকে একটি প্রাইম এবং দ্বিতীয় অ্যারে থেকে একটি প্রাইম নিয়ে যোগফল করলে কতটি স্বতন্ত্র (distinct) যোগফল পাওয়া যায় তা বের করতে হবে।
উদাহরণ
অ্যারে ১: [2, 3, 5]
অ্যারে ২: [2, 2, 4, 7]
প্রাইম জোড়া: (2,2)=4, (2,7)=9, (3,2)=5, (3,7)=10, (5,2)=7, (5,7)=12
স্বতন্ত্র যোগফল: {4, 5, 7, 9, 10, 12} → মোট 6টি
অ্যালগরিদম
- প্রাইম চেক ফাংশন লিখুন।
- দুই নেস্টেড লুপে সব জোড়া চেক করুন।
- যদি উভয় প্রাইম হয়, তবে যোগফল একটি
set-এ ইনসার্ট করুন। - সেটের সাইজ রিটার্ন করুন।
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * 1LL * i <= n; i++)
if (n % i == 0) return false;
return true;
}
int distinctPrimeSums(int arr1[], int n1, int arr2[], int n2) {
unordered_set sums;
for (int i = 0; i < n1; i++) {
if (!isPrime(arr1[i])) continue;
for (int j = 0; j < n2; j++) {
if (!isPrime(arr2[j])) continue;
sums.insert(arr1[i] + arr2[j]);
}
}
return sums.size();
}
int main() {
int arr1[] = {2, 3, 5};
int arr2[] = {2, 2, 4, 7};
int n1 = sizeof(arr1)/sizeof(arr1[0]);
int n2 = sizeof(arr2)/sizeof(arr2[0]);
cout << "Distinct prime sums: " << distinctPrimeSums(arr1, n1, arr2, n2);
return 0;
}
ইনপুট
arr1=[2,3,5], arr2=[2,2,4,7]
আউটপুট
6