Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Count Full Prime numbers in a given range

  • Last Updated : 28 Apr, 2021

Given two integers L and R, the task is to count the number of full prime numbers that are present in the given range.

A number is said to be Full prime if the number itself is prime and all its digits are also prime. 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

Examples: 

  • 53 is Full Prime because it is prime and all its digits (5 and 3) are also prime.
  • 13 is not Full Prime because it has a non-prime digit ( 1 is not prime).

Examples:



Input: L = 1, R = 100
Output : 8
Explanations: 2 3 5 7 23 37 53 73 are the Full Prime numbers between 1 and 100. Therefore, the count is 8.

Input: L = 200, R = 300
Output: 5
Explanation: 223 227 233 257 277 are the Full Prime numbers between 200 and 300. Therefore, the count is 5.

Approach: Follow the steps below to solve the problem:

  • Simply traverse the range from L to R.
  • For every number i in the range, check if it is divisible by any number from the range [2, sqrt(i)]. If found to be true, then it is not a prime. Proceed to the next number.
  • Otherwise, check if all its digits are prime or not. If found to be true, increase count.
  • Finally, after complete traversal of the range, print the value of count.

Below is the implementation of the above approach:

C++




// C++ Program to implement
// the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if a
// number is prime or not
bool isPrime(int num)
{
    if (num <= 1)
        return false;
 
    for (int i = 2; i * i <= num; i++)
 
        // If a divisor of n exists
        if (num % i == 0)
            return false;
    return true;
}
 
// Function to check if a
// number is Full Prime or not
bool isFulPrime(int n)
{
    // If n is not a prime
    if (!isPrime(n))
        return false;
 
    // Otherwise
    else {
        while (n > 0) {
            // Extract digit
            int rem = n % 10;
            // If any digit of n
            // is non-prime
            if (!(rem == 2 || rem == 3
                  || rem == 5 || rem == 7))
                return false;
 
            n = n / 10;
        }
    }
    return true;
}
 
// Function to print count of
// Full Primes in a range [L, R]
int countFulPrime(int L, int R)
{
    // Stores count of full primes
    int cnt = 0;
 
    for (int i = L; i <= R; i++) {
 
        // Check if i is full prime
        if ((i % 2) != 0 && isFulPrime(i)) {
            cnt++;
        }
    }
    return cnt;
}
 
// Driver Code
int main()
{
    int L = 1, R = 100;
 
    // Stores count of full primes
    int ans = 0;
 
    if (L < 3)
        ans++;
    cout << ans + countFulPrime(L, R);
 
    return 0;
}

Java




// Java program to implement
// the above approach
import java.io.*;
import java.util.*;
 
class GFG{
  
// Function to check if a
// number is prime or not
static boolean isPrime(int num)
{
    if (num <= 1)
        return false;
  
    for(int i = 2; i * i <= num; i++)
     
        // If a divisor of n exists
        if (num % i == 0)
            return false;
             
    return true;
}
  
// Function to check if a
// number is Full Prime or not
static boolean isFulPrime(int n)
{
     
    // If n is not a prime
    if (!isPrime(n))
        return false;
  
    // Otherwise
    else
    {
        while (n > 0)
        {
             
            // Extract digit
            int rem = n % 10;
             
            // If any digit of n
            // is non-prime
            if (!(rem == 2 || rem == 3 ||
                  rem == 5 || rem == 7))
                return false;
  
            n = n / 10;
        }
    }
    return true;
}
  
// Function to print count of
// Full Primes in a range [L, R]
static int countFulPrime(int L, int R)
{
     
    // Stores count of full primes
    int cnt = 0;
  
    for(int i = L; i <= R; i++)
    {
         
        // Check if i is full prime
        if ((i % 2) != 0 && isFulPrime(i))
        {
            cnt++;
        }
    }
    return cnt;
}
  
// Driver Code
public static void main (String[] args)
{
    int L = 1, R = 100;
  
    // Stores count of full primes
    int ans = 0;
  
    if (L < 3)
        ans++;
         
    System.out.println(ans + countFulPrime(L, R));
}
}
 
// This code is contributed by sanjoy_62

Python3




# Python3 program to implement
# the above approach
 
# Function to check if a
# number is prime or not
def isPrime(num):
     
    if (num <= 1):
        return False
 
    for i in range(2, num + 1):
        if i * i > num:
            break
 
        # If a divisor of n exists
        if (num % i == 0):
            return False
             
    return True
 
# Function to check if a
# number is Full Prime or not
def isFulPrime(n):
     
    # If n is not a prime
    if (not isPrime(n)):
        return False
 
    # Otherwise
    else:
        while (n > 0):
             
            # Extract digit
            rem = n % 10
             
            # If any digit of n
            # is non-prime
            if (not (rem == 2 or rem == 3 or
                     rem == 5 or rem == 7)):
                return False
 
            n = n // 10
             
    return True
 
# Function to prcount of
# Full Primes in a range [L, R]
def countFulPrime(L, R):
     
    # Stores count of full primes
    cnt = 0
 
    for i in range(L, R + 1):
         
        # Check if i is full prime
        if ((i % 2) != 0 and isFulPrime(i)):
            cnt += 1
             
    return cnt
 
# Driver Code
if __name__ == '__main__':
     
    L = 1
    R = 100
 
    # Stores count of full primes
    ans = 0
 
    if (L < 3):
        ans += 1
         
    print(ans + countFulPrime(L, R))
 
# This code is contributed by mohit kumar 29

C#




// C# program to implement
// the above approach
using System;
 
class GFG{
  
// Function to check if a
// number is prime or not
static bool isPrime(int num)
{
    if (num <= 1)
        return false;
  
    for(int i = 2; i * i <= num; i++)
     
        // If a divisor of n exists
        if (num % i == 0)
            return false;
             
    return true;
}
  
// Function to check if a
// number is Full Prime or not
static bool isFulPrime(int n)
{
     
    // If n is not a prime
    if (!isPrime(n))
        return false;
  
    // Otherwise
    else
    {
        while (n > 0)
        {
             
            // Extract digit
            int rem = n % 10;
             
            // If any digit of n
            // is non-prime
            if (!(rem == 2 || rem == 3 ||
                  rem == 5 || rem == 7))
                return false;
  
            n = n / 10;
        }
    }
    return true;
}
  
// Function to print count of
// Full Primes in a range [L, R]
static int countFulPrime(int L, int R)
{
     
    // Stores count of full primes
    int cnt = 0;
  
    for(int i = L; i <= R; i++)
    {
         
        // Check if i is full prime
        if ((i % 2) != 0 && isFulPrime(i))
        {
            cnt++;
        }
    }
    return cnt;
}
  
// Driver Code
public static void Main (String[] args)
{
    int L = 1, R = 100;
  
    // Stores count of full primes
    int ans = 0;
  
    if (L < 3)
        ans++;
         
    Console.WriteLine(ans + countFulPrime(L, R));
}
}
 
// This code is contributed by math_lover

Javascript




<script>
 
// Javascript Program to implement
// the above approach
 
// Function to check if a
// number is prime or not
function isPrime(num)
{
    if (num <= 1)
        return false;
   
    for(let i = 2; i * i <= num; i++)
      
        // If a divisor of n exists
        if (num % i == 0)
            return false;
              
    return true;
}
   
// Function to check if a
// number is Full Prime or not
function isFulPrime(n)
{
     
    // If n is not a prime
    if (!isPrime(n))
        return false;
   
    // Otherwise
    else
    {
        while (n > 0)
        {
              
            // Extract digit
            let rem = n % 10;
              
            // If any digit of n
            // is non-prime
            if (!(rem == 2 || rem == 3 ||
                  rem == 5 || rem == 7))
                return false;
   
            n = Math.floor(n / 10);
        }
    }
    return true;
}
   
// Function to prlet count of
// Full Primes in a range [L, R]
function countFulPrime(L, R)
{
      
    // Stores count of full primes
    let cnt = 0;
   
    for(let i = L; i <= R; i++)
    {
          
        // Check if i is full prime
        if ((i % 2) != 0 && isFulPrime(i))
        {
            cnt++;
        }
    }
    return cnt;
}
 
// Driver code
let L = 1, R = 100;
 
// Stores count of full primes
let ans = 0;
 
if (L < 3)
    ans++;
      
document.write(ans + countFulPrime(L, R));
 
// This code is contributed by splevel62
 
</script>
Output: 
8

 

Time Complexity: O(N3/2)
Auxiliary Space: O(1)

 




My Personal Notes arrow_drop_up
Recommended Articles
Page :