Primality test for the sum of digits at odd places of a number

Given an integer ‘n’, the task is to check whether the sum of digits at the odd positions (from right to left) is prime or not.
If it is prime then, print “YES” or “NO” otherwise.

Examples:

Input: n = 123
Output: NO
As, 1 + 3 = 4 is not prime.

Input: n = 42
Output: YES
Since, 2 is a prime.

Approach: First, find the sum of the digits which are at odd positions i.e, 1, 3, 5, … (starting from right).
If the sum is prime then print ‘YES’ else print ‘NO’.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to do Primality test 
// for the sum of digits at 
// odd places of a number
  
#include <bits/stdc++.h>
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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


PHP

Output:

YES


My Personal Notes arrow_drop_up