Find the largest twins in given range in C++

C++Server Side ProgrammingProgramming

In this problem, we are given two values lValue and hValue. Our task is to find the largest twins in given range.

Two numbers are said to be twin numbers if both of them are prime numbers and the difference between them is 2.

Let's take an example to understand the problem,

Input : lValue = 65, rValue = 100
Output : 71, 73

Solution Approach

A simple solution to the problem is by looping from rValue - 2 to lValue and checking each pair of i and (i+2) for twins and print the first occurred twin.

Another Approach is by finding all prime numbers in the range and then check for the largest pair of i and (i+2) that are prime and

Example

Program to illustrate the working of our solution

#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;
}

Output

Largest twins in given range: (71, 73)
raja
Updated on 28-Jan-2022 11:43:13

Advertisements