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 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
#include <bits/stdc++.h>
using namespace std;
bool checkDigits( int n)
{
while (n) {
int dig = n % 10;
if (dig != 2 && dig != 3 &&
dig != 5 && dig != 7)
return false ;
n /= 10;
}
return true ;
}
bool prime( int n)
{
if (n == 1)
return false ;
for ( int i = 2; i * i <= n; i++) {
if (n % i == 0)
return false ;
}
return true ;
}
int isFullPrime( int n)
{
return (checkDigits(n) && prime(n));
}
int main()
{
int n = 53;
if (isFullPrime(n))
cout << "Yes" ;
else
cout << "No" ;
return 0;
}
|
Java
import java.util.*;
class Prime{
public static boolean checkDigits( int n)
{
while (n > 0 ) {
int dig = n % 10 ;
if (dig != 2 && dig != 3 &&
dig != 5 && dig != 7 )
return false ;
n /= 10 ;
}
return true ;
}
public static boolean prime( int n)
{
if (n == 1 )
return false ;
for ( int i = 2 ; i * i <= n; i++) {
if (n % i == 0 )
return false ;
}
return true ;
}
public static boolean isFullPrime( int n)
{
return (checkDigits(n) && prime(n));
}
public static void main(String[] args)
{
int n = 53 ;
if (isFullPrime(n))
System.out.print( "Yes" );
else
System.out.print( "No" );
}
}
|
Python
def checkDigits(n):
while (n) :
dig = n % 10
if (dig ! = 2 and
dig ! = 3 and dig ! = 5
and dig ! = 7 ) :
return 0
n = n / 10
return 1
def prime(n):
if (n = = 1 ):
return 0
i = 2
while i * i < = n :
if (n % i = = 0 ):
return 0
i = i + 1
return 1
def isFullPrime(n) :
return (checkDigits(n) and prime(n))
n = 53
if (isFullPrime(n)) :
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
class Prime
{
public static bool checkDigits( int n)
{
while (n > 0) {
int dig = n % 10;
if (dig != 2 && dig != 3 &&
dig != 5 && dig != 7)
return false ;
n /= 10;
}
return true ;
}
public static bool prime( int n)
{
if (n == 1)
return false ;
for ( int i = 2; i * i <= n; i++) {
if (n % i == 0)
return false ;
}
return true ;
}
public static bool isFullPrime( int n)
{
return (checkDigits(n) && prime(n));
}
public static void Main()
{
int n = 53;
if (isFullPrime(n))
Console.WriteLine( "Yes" );
else
Console.WriteLine( "No" );
}
}
|
PHP
<?php
function checkDigits( $n )
{
while ( $n )
{
$dig = $n % 10;
if ( $dig != 2 && $dig != 3 &&
$dig != 5 && $dig != 7)
return false;
$n = (int)( $n / 10);
}
return true;
}
function prime( $n )
{
if ( $n == 1)
return false;
for ( $i = 2; $i * $i <= $n ; $i ++)
{
if ( $n % $i == 0)
return false;
}
return true;
}
function isFullPrime( $n )
{
return (checkDigits( $n ) &&
prime( $n ));
}
$n = 53;
if (isFullPrime( $n ))
echo ( "Yes" );
else
echo ( "No" );
?>
|
Javascript
<script>
function checkDigits(n)
{
while (n > 0) {
let dig = n % 10;
if (dig != 2 && dig != 3 &&
dig != 5 && dig != 7)
return false ;
n = parseInt(n / 10, 10);
}
return true ;
}
function prime(n)
{
if (n == 1)
return false ;
for (let i = 2; i * i <= n; i++) {
if (n % i == 0)
return false ;
}
return true ;
}
function isFullPrime(n)
{
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.
Last Updated :
30 Apr, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...