Balanced Prime - GeeksforGeeks

06 May, 2021
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
 
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++
Java
Python3
PHP
C#
Javascript
// CPP Program to find Nth Balanced Prime#include<bits/stdc++.h>#define MAX 501using 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<int> 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 Programint main(){  int n = 4;   cout << balancedprime(n) << endl;  return 0;}
// Java Program to find Nth Balanced Primeimport 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<Integer> v =                     new Vector<Integer>();        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 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 Programn = 4print(balancedprime(n)) # This code is contributed by "Sharad_Bhardwaj".
<?php// PHP Program to find Nth Balanced Prime $MAX=501; // Return the Nth balanced prime.function balancedprime($n){    global $MAX;    // Sieve of Eratosthenes    $prime=array_fill(0,$MAX+1,true);     for ($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 ($i = $p*2; $i <= $MAX; $i += $p)                $prime[$i] = false;        }    }     // storing all primes    $v=array();    for ($p = 3; $p <= $MAX; $p += 2)    if ($prime[$p])        array_push($v,$p);             $count = 0;         // Finding the Nth balanced Prime    for ($i = 1; $i < count($v); $i++)    {        if ($v[$i] == ($v[$i+1] + $v[$i - 1])/2)        $count++;                 if ($count == $n)        return $v[$i];    }} // Driven Program $n = 4;echo balancedprime($n); // this code is contributed by mits.?>
// C# Program to find Nth Balanced Primeusing 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<int> v = new List<int>();        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
<script> // Javascript Program to find Nth Balanced Prime var MAX = 501; // Return the Nth balanced prime.function balancedprime(n){    // Sieve of Eratosthenes    var prime = Array(MAX+1).fill(true);     for (var 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 (var i = p*2; i <= MAX; i += p)                prime[i] = false;        }    }     // storing all primes    var v = [];    for (var p = 3; p <= MAX; p += 2)       if (prime[p])          v.push(p);               var count = 0;         // Finding the Nth balanced Prime    for (var i = 1; i < v.length; i++)    {        if (v[i] == (v[i+1] + v[i - 1])/2)          count++;                   if (count == n)          return v[i];    }} // Driven Programvar n = 4; document.write( balancedprime(n) ); </script>
Output:  
173
 
Prasad_Kshirsagar
Mithun Kumar
noob2000
Prime Number
sieve
Mathematical
Mathematical
Prime Number
sieve
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program to print prime numbers from 1 to N.
Modular multiplicative inverse
Fizz Buzz Implementation
Singular Value Decomposition (SVD)
Check if a number is Palindrome
Segment Tree | Set 1 (Sum of given range)
How to check if a given point lies inside or outside a polygon?
Program to multiply two matrices
Count ways to reach the n'th stair
Merge two sorted arrays with O(1) extra space