📜  对数字奇数位的数字之和进行素数检验

📅  最后修改于: 2021-04-21 22:36:52             🧑  作者: Mango

给定一个整数“ n”,任务是检查奇数位置(从右到左)的数字总和是否为质数。
如果是素数,则打印“是”或“否”。

例子:

方法:首先,找到位于奇数位置的数字总和,即1、3、5…(从右开始)。
如果总和为素数,则打印“是”,否则打印“否”。

下面是上述方法的实现:

C++
// C++ program to do Primality test 
// for the sum of digits at 
// odd places of a number
  
#include 
using namespace std;
  
// Function that return sum
// of the digits at odd places
int sum_odd(int n)
{
    int sum = 0, pos = 1;
    while (n) {
        if (pos % 2 == 1)
            sum += n % 10;
        n = n / 10;
        pos++;
    }
    return sum;
}
  
// Function that returns true
// if the number is prime
// else false
bool check_prime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
  
    // This condition is checked so that
    // we can skip middle five
    // numbers in the 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;
}
  
// Driver code
int main()
{
    int n = 223;
  
    // Get the sum of the
    // digits at odd places
    int sum = sum_odd(n);
  
    if (check_prime(sum))
        cout << "YES" << endl;
    else
        cout << "NO" << endl;
    return 0;
}


Java
// Java  program to do Primality test 
// for the sum of digits at 
// odd places of a number 
  
import java.io.*;
  
class GFG {
    // Function that return sum 
// of the digits at odd places 
static int sum_odd(int n) 
{ 
    int sum = 0, pos = 1; 
    while (n>0) { 
        if (pos % 2 == 1) 
            sum += n % 10; 
        n = n / 10; 
        pos++; 
    } 
    return sum; 
} 
  
// Function that returns true 
// if the number is prime 
// else false 
static boolean check_prime(int n) 
{ 
    // Corner cases 
    if (n <= 1) 
        return false; 
    if (n <= 3) 
        return true; 
  
    // This condition is checked so that 
    // we can skip middle five 
    // numbers in the 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; 
} 
  
// Driver code 
    public static void main (String[] args) {
      
    int n = 223; 
    // Get the sum of the 
    // digits at odd places 
    int sum = sum_odd(n); 
    if (check_prime(sum)) 
        System.out.println ("YES" ); 
    else
        System.out.println("NO"); 
    }
}


Python3
# Python3 program to do Primality test  
# for the sum of digits at  
# odd places of a number
  
# Function that return sum 
# of the digits at odd places 
def sum_odd(n):
    sums = 0
    pos = 1 
    while (n!=0):
        if (pos % 2 == 1):
            sums += n % 10
        n = n // 10
        pos+=1
    return sums
  
# Function to check if a 
# number is prime 
  
def check_prime(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
    
    for i in range(5,n,6): 
        if (n % i == 0 or n % (i + 2) == 0): 
            return False
    return True
  
#driver code
n = 223
# Get the sum of the 
# digits at odd places 
sums = sum_odd(n)
if (check_prime(sums)):
    print("YES") 
else:
    print("NO")
  
#this code is improved by sahilshelangia


C#
// C#  program to do Primality test 
// for the sum of digits at 
// odd places of a number 
using System;
  
public class GFG{
      
// Function that return sum 
// of the digits at odd places 
static int sum_odd(int n) 
{ 
    int sum = 0, pos = 1; 
    while (n>0) { 
        if (pos % 2 == 1) 
            sum += n % 10; 
        n = n / 10; 
        pos++; 
    } 
    return sum; 
} 
  
// Function that returns true 
// if the number is prime 
// else false 
static bool check_prime(int n) 
{ 
    // Corner cases 
    if (n <= 1) 
        return false; 
    if (n <= 3) 
        return true; 
  
    // This condition is checked so that 
    // we can skip middle five 
    // numbers in the 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; 
} 
  
// Driver code 
      
    static public void Main (){
        int n = 223; 
    // Get the sum of the 
    // digits at odd places 
    int sum = sum_odd(n); 
    if (check_prime(sum)) 
        Console.WriteLine("YES" ); 
    else
            Console.WriteLine("NO"); 
    }
}


PHP


输出:
YES