সমস্যা বিবরণ
দুটি মান lValue এবং hValue দেওয়া আছে। আমাদের কাজ হল সেই রেঞ্জের মধ্যে সবচেয়ে বড় টুইন প্রাইম (দুই প্রাইম যাদের পার্থক্য ২) বের করা।
উদাহরণ
ইনপুট: lValue = 65, rValue = 100 আউটপুট: 71, 73
সমাধানের পদ্ধতি
Sieve of Eratosthenes দিয়ে রেঞ্জের সব প্রাইম বের করে, তারপর hValue থেকে নিচে নেমে টুইন প্রাইম খুঁজা।
প্রোগ্রাম উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void findLargestTwins(int l, int u) {
vector<bool> prime(u+1, true);
prime[0]=prime[1]=false;
for(int p=2; p*p<=u; p++)
if(prime[p])
for(int i=p*2; i<=u; i+=p) prime[i]=false;
int i;
for(i=u; i>=l; i--)
if(prime[i] && i-2>=l && prime[i-2]) break;
if(i>=l) cout << "Largest twins: (" << i-2 << ", " << i << ")";
else cout << "No twins";
}
int main() {
findLargestTwins(54, 102);
return 0;
}
আউটপুট
Largest twins: (71, 73)