Check if N is a Balanced Prime number or not

Given a positive integer N, the task is to check if N is a Balanced Prime number or not.

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 p<sub>n</sub>, 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……

Examples:



Input: N = 5
Output: Yes
5 is 3rd prime number, the arithmetic mean of 2nd and 4th prime number i.e. 3 and 7 is 5.
so 5 is a Balanced prime.

Input: N = 11
Output: No

 

Approach:

  • If N is not a prime number or it is the first prime number i.e. 2 then print No.
  • Else find the primes closest to N (one on the left and one on the right) and store their arithmetic mean in mean.
    • If N == mean then print Yes.
    • Else print No.

Below is the implementation of the above approach:

C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to check if a
// given number is Balanced  prime
using System;
  
class GFG {
  
    // Utility function to check
    // if a number is prime or not
    static bool isPrime(int n)
    {
        // Corner cases
        if (n <= 1)
            return false;
        if (n <= 3)
            return true;
  
        // This is checked so that we can skip
        // middle five numbers in below loop
        if (n % 2 == 0 || n % 3 == 0)
            return false;
  
        for (int i = 5; i * i <= n; i = i + 6)
            if (n % i == 0 || n % (i + 2) == 0)
                return false;
  
        return true;
    }
  
    // Function that returns true
    // if n is a Balanced prime
    static bool isBalancedPrime(int n)
    {
  
        // If n is not a prime number or
        // n is the first prime then return false
        if (!isPrime(n) || n == 2)
            return false;
  
        // Initialize previous_prime to n - 1
        // and next_prime to n + 1
        int previous_prime = n - 1;
        int next_prime = n + 1;
  
        // Find next prime number
        while (!isPrime(next_prime))
            next_prime++;
  
        // Find previous prime number
        while (!isPrime(previous_prime))
            previous_prime--;
  
        // Arithmetic mean
        int mean = (previous_prime
                    + next_prime)
                   / 2;
  
        // If n is a weak prime
        if (n == mean)
            return true;
        else
            return false;
    }
  
    // Driver code
    public static void Main()
    {
        int n = 53;
  
        if (isBalancedPrime(n))
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}

chevron_right


Output:

Yes

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




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.