Check if a number is Full Prime

A full prime number is one in which the number itself is prime and all its digits are also prime. Given a number n, check if it is Full Prime or not.

Examples :

Input : 53
Output : Yes
Explanation: Number 53 is prime and
its digits are also prime.

Input : 41
Output : No
Explanation: Number 41 is prime but
its digits are not prime.



The naive approach will be to check if the number is prime or not then check the digits are prime or not, but this wont be efficient enough.

The efficient method is to do the other way around as there will be very few numbers in every 1000 numbers for which we have to check if it is prime or not, rest all numbers will fail when its digits are not prime.

CPP

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program for checking of
// full prime
#include <bits/stdc++.h>
using namespace std;
  
// function to check digits
bool checkDigits(int n)
{
    // check all digits are prime or not
    while (n) {
        int dig = n % 10;
  
        // check if digits are prime or not
        if (dig != 2 && dig != 3 && 
            dig != 5 && dig != 7)
            return false;
  
        n /= 10;
    }
  
    return true;
}
  
// To check if n is prime or not
bool prime(int n)
{
    if (n == 1)
        return false;
  
    // check for all factors
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0)
            return false;
    }
  
    return true;
}
  
// To check if n is Full Prime
int isFullPrime(int n)
{
    // The order is important here for
    // efficiency.
    return (checkDigits(n) && prime(n));
}
  
// Driver code to check the above function
int main()
    int n = 53;
    if (isFullPrime(n))
       cout << "Yes";
    else
       cout << "No";
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program for checking
// of full prime
import java.util.*;
  
class Prime{
      
    // function to check digits
    public static boolean checkDigits(int n)
    {
        // check all digits are prime or not
        while (n > 0) {
            int dig = n % 10;
  
            // check if digits are prime or not
            if (dig != 2 && dig != 3 && 
                dig != 5 && dig != 7)
                return false;
  
            n /= 10;
        }
  
        return true;
    }
      
    // To check if n is prime or not
    public static boolean prime(int n)
    {
        if (n == 1)
            return false;
  
        // check for all factors
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0)
                return false;
        }
  
        return true;
    }
      
    // To check if n is Full Prime
    public static boolean isFullPrime(int n)
    {
        // The order is important here for
        // efficiency
        return (checkDigits(n) && prime(n));
    }
      
    // driver code
    public static void main(String[] args)
    {
        int n = 53;
        if (isFullPrime(n))
            System.out.print( "Yes" );
        else
            System.out.print( "No");
    }
}
  
// This code is contributed by rishabh_jain

chevron_right


Python

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program for checking
# of full prime
  
# function to check digits
def checkDigits(n):
  
    # check all digits are 
    # prime or not
    while (n) :
        dig = n % 10
  
        # check if digits are
        # prime or not
        if (dig != 2 and 
                   dig != 3 and dig != 5
                   and dig != 7) :
            return 0
        n = n / 10
  
    return 1
  
# To check if n is prime or not
def prime(n):
    if (n == 1):
        return 0
          
    # check for all factors
    i = 2
    while i * i <= n :
        if (n % i == 0):
            return 0
        i = i + 1
    return 1
  
# To check if n is Full Prime
def isFullPrime(n) :
  
    # The order is important here
    # for efficiency.
    return (checkDigits(n) and prime(n))
  
# Driver code
n = 53
if (isFullPrime(n)) :
    print("Yes")
else :
    print("No")
  
# This code is contributed by rishabh_jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program for checking
// of full prime
using System;
  
class Prime
{
      
    // function to check digits
    public static bool checkDigits(int n)
    {
        // check all digits are prime or not
        while (n > 0) {
            int dig = n % 10;
  
            // check if digits are prime or not
            if (dig != 2 && dig != 3 && 
                dig != 5 && dig != 7)
                return false;
  
            n /= 10;
        }
  
        return true;
    }
      
    // To check if n is prime or not
    public static bool prime(int n)
    {
        if (n == 1)
            return false;
  
        // check for all factors
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0)
                return false;
        }
  
        return true;
    }
      
    // To check if n is Full Prime
    public static bool isFullPrime(int n)
    {
        // The order is important here for
        // efficiency
        return (checkDigits(n) && prime(n));
    }
      
    // Driver code
    public static void Main()
    {
        int n = 53;
        if (isFullPrime(n))
            Console.WriteLine( "Yes" );
        else
            Console.WriteLine( "No");
    }
}
  
// This code is contributed by vt_m

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program for checking 
// of full prime
  
// function to check digits
function checkDigits($n)
{
    // check all digits 
    // are prime or not
    while ($n
    {
        $dig = $n % 10;
  
        // check if digits are 
        // prime or not
        if ($dig != 2 && $dig != 3 && 
            $dig != 5 && $dig != 7)
            return false;
  
        $n = (int)($n / 10);
    }
  
    return true;
}
  
// To check if n is prime or not
function prime($n)
{
    if ($n == 1)
        return false;
  
    // check for all factors
    for ($i = 2; $i * $i <= $n; $i++) 
    {
        if ($n % $i == 0)
            return false;
    }
  
    return true;
}
  
// To check if n is Full Prime
function isFullPrime($n)
{
    // The order is important 
    // here for efficiency.
    return (checkDigits($n) && 
            prime($n));
}
  
// Driver Code
$n = 53;
if (isFullPrime($n))
    echo("Yes");
else
    echo("No");
  
// This code is contributed by Ajit.
?>

chevron_right



Output :

Yes

If we are given multiple numbers and range of numbers is small enough so that we can store them in array, we can use Sieve of Eratosthenes to answer queries fast.



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 : jit_t



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.