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 won’t 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, the rest of the numbers will fail when its digits are not prime.
// 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;
} |
// 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 |
# 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 |
// 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 |
<?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. ?> |
<script> // Javascript program for checking of full prime
// function to check digits
function checkDigits(n)
{
// check all digits are prime or not
while (n > 0) {
let dig = n % 10;
// check if digits are prime or not
if (dig != 2 && dig != 3 &&
dig != 5 && dig != 7)
return false ;
n = parseInt(n / 10, 10);
}
return true ;
}
// To check if n is prime or not
function prime(n)
{
if (n == 1)
return false ;
// check for all factors
for (let 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));
}
let n = 53;
if (isFullPrime(n))
document.write( "Yes" );
else
document.write( "No" );
</script> |
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.