📌  相关文章
📜  一个数字及其最接近的质数的最小绝对差

📅  最后修改于: 2021-04-29 04:22:49             🧑  作者: Mango

给定正整数N ,任务是找到N的绝对差和最接近N的素数。
注意:最接近N的素数可以小于,等于或大于N。

例子:

方法:

  • 如果N质数,则打印0
  • 否则,找到第一个素数> N并记下与N的差。
  • 然后,找到第一个素数并记下它与N的差。
  • 并打印获得的这两个差异中的最小值

下面是上述方法的实现:

C++
// C++ program to find the minimum absolute 
// difference between a number and its closest prime
  
#include 
  
using namespace std;
  
    // Function to check if a number is prime or not 
    bool isPrime(int N) 
    { 
        for (int i = 2; i <= sqrt(N); i++) { 
            if (N % i == 0) 
                return false; 
        } 
        return true; 
    } 
  
    // Function to find the minimum absolute difference 
    // between a number and its closest prime 
    int getDifference(int N) 
    { 
        if (N == 0) 
            return 2; 
        else if (N == 1) 
            return 1; 
        else if (isPrime(N)) 
            return 0; 
  
        // Variables to store first prime 
        // above and below N 
        int aboveN = -1, belowN = -1; 
        int n1; 
  
        // Finding first prime number greater than N 
        n1 = N + 1; 
        while (true) { 
            if (isPrime(n1)) { 
                aboveN = n1; 
                break; 
            } 
            else
                n1++; 
        } 
  
        // Finding first prime number less than N 
        n1 = N - 1; 
        while (true) { 
            if (isPrime(n1)) { 
                belowN = n1; 
                break; 
            } 
            else
                n1--; 
        } 
  
        // Variables to store the differences 
        int diff1 = aboveN - N; 
        int diff2 = N - belowN; 
  
        return min(diff1, diff2); 
    } 
  
// Driver code 
int main()
{
    int N = 25; 
   cout << getDifference(N) << endl; 
   return 0;
  // This code is contributed by Ryuga
}


Java
// Java program to find the minimum absolute
// difference between a number and its closest prime
class GFG {
  
    // Function to check if a number is prime or not
    static boolean isPrime(int N)
    {
        for (int i = 2; i <= Math.sqrt(N); i++) {
            if (N % i == 0)
                return false;
        }
        return true;
    }
  
    // Function to find the minimum absolute difference
    // between a number and its closest prime
    static int getDifference(int N)
    {
        if (N == 0)
            return 2;
        else if (N == 1)
            return 1;
        else if (isPrime(N))
            return 0;
  
        // Variables to store first prime 
        // above and below N
        int aboveN = -1, belowN = -1;
        int n1;
  
        // Finding first prime number greater than N
        n1 = N + 1;
        while (true) {
            if (isPrime(n1)) {
                aboveN = n1;
                break;
            }
            else
                n1++;
        }
  
        // Finding first prime number less than N
        n1 = N - 1;
        while (true) {
            if (isPrime(n1)) {
                belowN = n1;
                break;
            }
            else
                n1--;
        }
  
        // Variables to store the differences
        int diff1 = aboveN - N;
        int diff2 = N - belowN;
  
        return Math.min(diff1, diff2);
    }
  
    // Driver code
    public static void main(String args[])
    {
        int N = 25;
        System.out.println(getDifference(N));
    }
}


Python3
# Python 3 program to find the minimum 
# absolute difference between a number 
# and its closest prime
from math import sqrt
  
# Function to check if a number is
# prime or not 
def isPrime(N):
    k = int(sqrt(N)) + 1
    for i in range(2, k, 1):
        if (N % i == 0):
            return False
          
    return True
  
# Function to find the minimum absolute 
# difference between a number and its 
# closest prime 
def getDifference(N):
    if (N == 0):
        return 2
    elif (N == 1):
        return 1
    elif (isPrime(N)):
        return 0
  
    # Variables to store first prime 
    # above and below N 
    aboveN = -1
    belowN = -1
          
    # Finding first prime number 
    # greater than N 
    n1 = N + 1
    while (True):
        if (isPrime(n1)):
            aboveN = n1 
            break
              
        else:
            n1 += 1
  
    # Finding first prime number 
    # less than N 
    n1 = N - 1
    while (True):
        if (isPrime(n1)):
            belowN = n1 
            break
              
        else:
            n1 -= 1
  
    # Variables to store the differences 
    diff1 = aboveN - N
    diff2 = N - belowN 
  
    return min(diff1, diff2)
      
# Driver code 
if __name__ == '__main__':
    N = 25
    print(getDifference(N))
  
# This code is contributed by
# Surendra_Gangwar


C#
// C# program to find the minimum absolute
// difference between a number and its closest prime
using System;
class GFG {
  
    // Function to check if a number is prime or not
    static bool isPrime(int N)
    {
        for (int i = 2; i <= Math.Sqrt(N); i++) {
            if (N % i == 0)
                return false;
        }
        return true;
    }
  
    // Function to find the minimum absolute difference
    // between a number and its closest prime
    static int getDifference(int N)
    {
        if (N == 0)
            return 2;
        else if (N == 1)
            return 1;
        else if (isPrime(N))
            return 0;
  
        // Variables to store first prime 
        // above and below N
        int aboveN = -1, belowN = -1;
        int n1;
  
        // Finding first prime number greater than N
        n1 = N + 1;
        while (true) {
            if (isPrime(n1)) {
                aboveN = n1;
                break;
            }
            else
                n1++;
        }
  
        // Finding first prime number less than N
        n1 = N - 1;
        while (true) {
            if (isPrime(n1)) {
                belowN = n1;
                break;
            }
            else
                n1--;
        }
  
        // Variables to store the differences
        int diff1 = aboveN - N;
        int diff2 = N - belowN;
  
        return Math.Min(diff1, diff2);
    }
  
    // Driver code
    public static void Main()
    {
        int N = 25;
        Console.WriteLine(getDifference(N));
    }
}
// This code is contributed by  anuj_67..


PHP


输出:
2