# 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.

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++

 `// 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

 ` `

Output:

```YES
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : sahilshelangia, jit_t