给定正整数N ,任务是找到N的绝对差和最接近N的素数。
注意:最接近N的素数可以小于,等于或大于N。
例子:
Input: N = 25
Output: 2
For N = 25
Closest prime greater than 25 is 29. So difference is 4.
Closest prime less than 25 is 23. So difference is 2.
The minimum of these two is 2.
Input: N = 2
Output: 0
As 2 itself is a prime number, closest prime number is 2. So difference is 0.
方法:
- 如果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