Tuesday, January 7, 2025
Google search engine

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,
\Huge p_n= \frac{p_{n-1}+p_{n+1}}{2}
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++




// CPP Program to find Nth Balanced Prime
#include<bits/stdc++.h>
#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<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 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<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




# 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".


PHP




<?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#




// 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<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


Javascript




<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 Program
var n = 4; 
document.write( balancedprime(n) );
 
</script>


Output: 
 

173

Time Complexity: O(m*log(log(m))) where m=MAX(501 in this code)

Auxiliary Space: O(m)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments