📜  检查相邻数字的绝对差之和是否为质数

📅  最后修改于: 2021-05-06 03:23:22             🧑  作者: Mango

给定数字N ,任务是检查天气相邻数字的绝对差之和为素数。

例子:

Input: N = 142 
Output: Prime
Sum = |1-4| + |4-2| = 5 i.e. prime.

Input: N = 347
Output: Not prime 

方法:找到相邻数字的绝对差之和,然后检查该和是否为质数。
下面是上述方法的实现:

C++
// C++ implementation of the above approach
#include
 
using namespace std;
 
 
// Function to check for a prime number
bool Prime(int n){
 
    if( n == 1){
        return false;
            }
    for (int i=2;i*i<=n;i++){
        if (n % i == 0)
            return false;
                    }
    return true;
}
 
// Function to find the sum of array
bool checkSumPrime(string st){
    int summ = 0;
    for (int i=1;i


Java
// Java implementation of the above approach
import java.util.*;
 
class GFG
{
 
    // Function to check for a prime number
    static boolean Prime(int n)
    {
        if (n == 1)
            return false;
        for (int i = 2; i * i <= n; i++)
            if (n % i == 0)
                return false;
        return true;
    }
 
    // Function to find the sum of array
    static boolean checkSumPrime(String str)
    {
        int summ = 0;
        for (int i = 1; i < str.length(); i++)
            summ += Math.abs(str.charAt(i - 1) -
                             str.charAt(i));
 
        if (Prime(summ))
            return true;
        else
            return false;
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        int num = 142;
        String str = "142";
        if (checkSumPrime(str))
            System.out.println("Prime");
        else
            System.out.println("Not Prime");
    }
}
 
// This code is contributed by
// sanjeev2552


Python3
# Python3 implementation of the above approach
import math as mt
 
# Function to check for a prime number
def Prime(n):
     
    if n == 1:
        return False
         
    for i in range(2, mt.ceil(mt.sqrt(n + 1))):
        if n % i == 0:
            return False
    return True
     
# Function to find the sum of array
def checkSumPrime(string):
    summ = 0
    for i in range(1, len(string)):
        summ += abs(int(string[i - 1]) -
                    int(string[i]))
         
    if Prime(summ):
        return True
    else:
        return False
 
# Driver code
num = 142
 
string = str(num)
 
s = [i for i in string]
 
if checkSumPrime(s):
    print("Prime")
else:
    print("Not Prime\n")
 
# This code is contributed by Mohit Kumar


C#
// C# implementation of the above approach
using System;
     
class GFG
{
 
    // Function to check for a prime number
    static bool Prime(int n)
    {
        if (n == 1)
            return false;
        for (int i = 2; i * i <= n; i++)
            if (n % i == 0)
                return false;
        return true;
    }
 
    // Function to find the sum of array
    static bool checkSumPrime(String str)
    {
        int summ = 0;
        for (int i = 1; i < str.Length; i++)
            summ += Math.Abs(str[i - 1] -
                             str[i]);
 
        if (Prime(summ))
            return true;
        else
            return false;
    }
 
    // Driver Code
    public static void Main(String[] args)
    {
        String str = "142";
        if (checkSumPrime(str))
            Console.WriteLine("Prime");
        else
            Console.WriteLine("Not Prime");
    }
}
 
// This code is contributed by Rajput-Ji


Javascript


输出:
Prime

时间复杂度: O(sum 1/2 ),其中总和数字的位数之和

辅助空间: O(1)