Balanced Prime

In number theory, a Balanced Prime is a prime number with equal-sized prime gaps above and below it, so that it is equal to the arithmetic mean of the nearest primes above and below. Or to put it algebraically, given a prime number pn, where n is its index in the ordered set of prime numbers, First few balanced prime are 5, 53, 157, 173……

Given a positive integer N. The task is to print Nth balanced prime number.
Examples:

Input : n = 2
Output : 53

Input : n = 3
Output : 157

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is to generate prime numbers using Sieve of Eratosthenes and store it in an array. Now iterate over the array to check whether it is balanced prime or not and keep counting the balanced prime. Once you reach the nth prime, return it.

Below is the implementation of this approach:

C++

 // CPP Program to find Nth Balanced Prime #include #define MAX 501 using namespace std;    // Return the Nth balanced prime. int balancedprime(int n) {     // Sieve of Eratosthenes     bool prime[MAX+1];     memset(prime, true, sizeof(prime));        for (int p = 2; p*p <= MAX; p++)     {         // If prime[p] is not changed, then it is a prime         if (prime[p] == true)         {             // Update all multiples of p             for (int i = p*2; i <= MAX; i += p)                 prime[i] = false;         }     }        // storing all primes     vector v;     for (int p = 3; p <= MAX; p += 2)        if (prime[p])           v.push_back(p);                  int count = 0;            // Finding the Nth balanced Prime     for (int i = 1; i < v.size(); i++)     {         if (v[i] == (v[i+1] + v[i - 1])/2)           count++;                      if (count == n)           return v[i];     } }    // Driven Program int main() {   int n = 4;     cout << balancedprime(n) << endl;   return 0; }

Java

 // Java Program to find Nth Balanced Prime import java.util.*;    public class GFG {     static int MAX = 501;        // Return the Nth balanced prime.     public static int balancedprime(int n)     {                    // Sieve of Eratosthenes         boolean[] prime = new boolean[MAX+1];                    for(int k = 0 ; k < MAX+1; k++)             prime[k] = true;            for (int p = 2; p*p <= MAX; p++)         {                            // If prime[p] is not changed,             // then it is a prime             if (prime[p] == true)             {                                    // Update all multiples of p                 for (int i = p*2; i <= MAX;                                      i += p)                     prime[i] = false;             }         }            // storing all primes         Vector v =                       new Vector();         for (int p = 3; p <= MAX; p += 2)             if (prime[p])                 v.add(p);            int count = 0;            // Finding the Nth balanced Prime         for (int i = 1; i < v.size(); i++)         {             if ((int)v.get(i) == ((int)v.get(i+1)                            + (int)v.get(i-1))/2)                 count++;                            if (count == n)                 return (int) v.get(i);         }            return 1;     }            // Driven Program     public static void main(String[] args)     {         int n = 4;         System.out.print(balancedprime(n));     } }    // This code is contributed by Prasad Kshirsagar

Python3

 # Python3 code to find Nth Balanced Prime    MAX = 501    # Return the Nth balanced prime. def balancedprime( n ):        # Sieve of Eratosthenes     prime = [True]*(MAX+1)     p=2     while p * p <= MAX:            # If prime[p] is not changed,          # then it is a prime         if prime[p] == True:                        # Update all multiples of p             i = p * 2             while i <= MAX:                 prime[i] = False                 i = i + p         p = p +1                # storing all primes     v = list()     p = 3     while p <= MAX:         if prime[p]:             v.append(p)         p = p + 2                count = 0            # Finding the Nth balanced Prime     i=1     for i in range(len(v)):         if v[i] == (v[i+1] + v[i - 1])/2:             count += 1                        if count == n:             return v[i]     # Driven Program n = 4 print(balancedprime(n))     # This code is contributed by "Sharad_Bhardwaj".



C#

 // C# Program to find Nth Balanced Prime using System; using System.Collections.Generic; public class GFG {     static int MAX = 501;        // Return the Nth balanced prime.     public static int balancedprime(int n)     {                    // Sieve of Eratosthenes         bool[] prime = new bool[MAX+1];                    for(int k = 0 ; k < MAX+1; k++)             prime[k] = true;            for (int p = 2; p*p <= MAX; p++)         {                            // If prime[p] is not changed,             // then it is a prime             if (prime[p] == true)             {                                    // Update all multiples of p                 for (int i = p*2; i <= MAX;                                     i += p)                     prime[i] = false;             }         }            // storing all primes         List v = new List();         for (int p = 3; p <= MAX; p += 2)             if (prime[p])                 v.Add(p);            int c = 0;         // Finding the Nth balanced Prime         for (int i = 1; i < v.Count-1; i++)         {             if ((int)v[i]==(int)(v[i+1]+v[i-1])/2)             c++;             if (c == n)                 return (int) v[i];         }            return 1;     }            // Driven Program     public static void Main()     {         int n = 4;         Console.WriteLine(balancedprime(n));     } }    // This code is contributed by mits

Output:

173

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.