এই সমস্যায়, আমাদের lValue এবং hValue দুটি মান দেওয়া হয়েছে। আমাদের কাজ হল প্রদত্ত পরিসরে সবচেয়ে বড় যমজ খুঁজে পাওয়া .
দুটি সংখ্যাকে যমজ সংখ্যা বলা হয় যদি উভয়টি মৌলিক সংখ্যা হয় এবং তাদের মধ্যে পার্থক্য 2 হয়।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
Input : lValue = 65, rValue = 100 Output : 71, 73
সমাধান পদ্ধতি
সমস্যার একটি সহজ সমাধান হল rValue - 2 থেকে lValue এ লুপ করা এবং যমজ সন্তানের জন্য i এবং (i+2) এর প্রতিটি জোড়া চেক করা এবং প্রথম যমজটি প্রিন্ট করা।
আরেকটি পদ্ধতি পরিসরে সমস্ত মৌলিক সংখ্যা খুঁজে বের করার মাধ্যমে এবং তারপর i এবং (i+2) এর বৃহত্তম জোড়ার জন্য পরীক্ষা করুন যেগুলি মৌলিক এবং
উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম
#include <bits/stdc++.h>
using namespace std;
void findLargestTwins(int lValue, int uValue) {
bool primes[uValue + 1];
memset(primes, true, sizeof(primes));
primes[0] = primes[1] = false;
for (int p = 2; p <= floor(sqrt(uValue)) + 1; p++) {
if (primes[p]) {
for (int i = p * 2; i <= uValue; i += p)
primes[i] = false;
}
}
int i;
for (i = uValue; i >= lValue; i--) {
if (primes[i] && (i - 2 >= lValue && primes[i - 2] == true)) {
break;
}
}
if(i >= lValue )
cout<<"Largest twins in given range: ("<<(i-2)<<", "<<i<<")";
else
cout<<"No Twins possible";
}
int main(){
int lValue = 54;
int uValue = 102;
findLargestTwins(lValue, uValue);
return 0;
} আউটপুট
Largest twins in given range: (71, 73)