📜  检查N是否为平衡素数

📅  最后修改于: 2021-04-23 06:30:30             🧑  作者: Mango

给定正整数N ,任务是检查N是否为平衡素数。

例子:

方法:

  • 如果N不是素数或它是第一个素数,即2,则打印No。
  • 否则,找到最接近N的素数(左边一个,右边一个),并将它们的算术平均值存储在mean中
    • 如果N ==表示平均值,则打印Yes
    • 其他打印

下面是上述方法的实现:

C++
// C++ program to check if a
// given number is Balanced prime
#include 
using namespace std;
 
// Utility function to check
// if a number is prime or not
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
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
int main()
{
    int n = 53;
 
    if (isBalancedPrime(n))
        cout << "Yes";
    else
        cout << "No";
     
    return 0;
}
 
// This code is contributed by himanshu77


Java
// Java program to check if a
// given number is Balanced prime
class GFG{
     
// Utility function to check
// if a number is prime or not   
static boolean 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 += 6)
        if (n % i == 0 ||
            n % (i + 2) == 0)
            return false;
    return true;
}
 
// Function that returns true
// if n is a Balanced prime    
static boolean 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(String[] args)
{
    int n = 53;
 
    if (isBalancedPrime(n))
        System.out.println("Yes");
    else
        System.out.println("No");
}
}
 
// This code is contributed by stutipathak31jan


Python3
# Python3 program to check if a
# given number is Balanced prime
 
# Utility function to check
# if a number is prime or not
def isPrime(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 or n % 3 == 0:
        return False
     
    i = 5
    while i * i <= n:
        if (n % i == 0 or
            n % (i + 2) == 0):
            return False
        i += 6
         
    return True
 
# Function that returns true
# if n is a Balanced prime
def isBalancedPrime(n):
     
    # If n is not a prime number
    # or n is the first prime
    # then return false
    if not isPrime(n) or n == 2:
        return False
     
    # Initialize previous_prime to 
    # n - 1 and next_prime to n + 1
    previous_prime = n - 1
    next_prime = n + 1
     
    # Find next prime number
    while not isPrime(next_prime):
        next_prime += 1
         
    # Find previous prime number
    while not isPrime(previous_prime):
        previous_prime -= 1
         
    # Arithmetic mean
    mean = (previous_prime +
            next_prime) / 2
     
    # If n is a weak prime
    if n == mean:
        return True
    else:
        return False
 
# Driver code
n = 53
 
if isBalancedPrime(n):
    print("Yes")
else:
    print("No")
 
# This code is contributed by stutipathak31jan


C#
// 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");
    }
}


Javascript


输出:
Yes