Open In App

Count numbers in range L-R that are divisible by all of its non-zero digits

Last Updated : 23 May, 2022
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

Given a range l - r (inclusive), count the numbers that are divisible by all of its non-zero digits.
Examples: 
 

Input : 1 9 
Output : 9
Explanation: 
all the numbers are divisible by 
their digits in the range 1-9.

Input : 10 20 
Output : 5
Explanation: 
10, 11, 12, 15, 20 


 


Approach: 
1. Run a loop to generate every number from l and r. 
2. Check if every non-zero digit of that number divides the number or not. 
3. Keep a count of all numbers that are completely divisible by its digits. 
4. Print the count of numbers.
Below is the implementation of the above approach: 
 

C++
// C++ program to
// Count numbers in
// range L-R that are
// divisible by
// all of its non-zero
// digits
#include <bits/stdc++.h>
using namespace std;

// check if the number is 
// divisible by the digits.
bool check(int n)
{
    int m = n;
    while (n) {
        int r = n % 10;
        if (r > 0) 
            if ((m % r) != 0)
                return false;        
        n /= 10;
    }

    return true;
}

// function to calculate the
// number of numbers
int count(int l, int r)
{
    int ans = 0;
    for (int i = l; i <= r; i++) 
        if (check(i))
            ans += 1;    
    return ans;
}

// Driver function
int main()
{
    int l = 10, r = 20;
    cout << count(l, r);
    return 0;
}
Java
// Java program to Count 
// numbers in range L-R
// that are divisible by
// all of its non-zero 
// digits
import java.io.*;

class GFG {

    // check if the number
    // is divisible by the
    // digits.
    static boolean check(int n)
    {
        int m = n;
    
        while (n != 0)
        {
            int r = n % 10;
        
            if (r > 0) 
                if ((m % r) != 0)
                    return false;     
        
            n /= 10;
        }
    
        return true;
    }
    
    // function to calculate
    // the number of numbers
    static int count(int l, int r)
    {
        int ans = 0;
        
        for (int i = l; i <= r; i++) 
            if (check(i))
                ans += 1; 
        return ans;
    }
    
    // Driver function
    public static void main(String args[])
    {
        int l = 10, r = 20;
        
        System.out.println(count(10, 20));
    }
}

// This code is contributed by Nikita Tiwari.
Python3
# Python 3 program
# to Count numbers in
# range L-R that are 
# divisible by all of
# its non-zero digits


# check if the number is 
# divisible by the digits.
def check(n) :
    m = n
    while (n != 0) :
        r = n % 10
        if (r > 0) :
            if ((m % r) != 0) :
                return False    
        n = n // 10
    
    return True
    

# function to calculate the
# number of numbers
def count(l, r) :
    ans = 0
    for i in range(l, r+1) :
        if (check(i)) :
            ans = ans + 1
    return ans

# Driver function
l = 10
r = 20
print(count(l, r))

# This code is contributed by Nikita Tiwari.
C#
// Java program to Count 
// numbers in range L-R
// that are divisible by
// all of its non-zero 
// digits
using System;

class GFG {

    // check if the number
    // is divisible by the
    // digits.
    static bool check(int n)
    {
        int m = n;
    
        while (n != 0)
        {
            int r = n % 10;
        
            if (r > 0) 
                if ((m % r) != 0)
                    return false; 
        
            n /= 10;
        }
    
        return true;
    }
    
    // function to calculate
    // the number of numbers
    static int count(int l, int r)
    {
        int ans = 0;
        
        for (int i = l; i <= r; i++) 
            if (check(i))
                ans += 1; 
        return ans;
    }
    
    // Driver function
    public static void Main()
    {
        int l = 10, r = 20;
        
        Console.WriteLine(count(l, r));
    }
}

// This code is contributed by Vt_m.
PHP
<?php
// PHP program to Count numbers
// in range L-R that are
// divisible by all of its 
// non-zero digits

// check if the number is 
// divisible by the digits.
function check($n)
{
    $m = $n;
    while ($n) {
        $r = $n % 10;
        if ($r > 0) 
            if (($m % $r) != 0)
                return false;     
        $n /= 10;
    }

    return true;
}

// function to calculate the
// number of numbers
function countIn($l, $r)
{
    $ans = 0;
    for ($i = $l; $i <= $r; $i++) 
        if (check($i))
            $ans += 1; 
            
    return $ans;

}

// Driver function
$l = 10; $r = 20;
echo countIn($l, $r);

// This code is contributed ajit
?>
JavaScript
<script>

// Javascript program to Count numbers
// in range L-R that are
// divisible by all of its
// non-zero digits

// check if the number is
// divisible by the digits.
function check(n)
{
     let m = n;
    while (n) {
        let r = n % 10;
        if (r > 0)
            if ((n % r) != 0)
                return false;    
        n /= 10;
    }

    return true;
}

// function to calculate the
// number of numbers
function countIn(l, r)
{
    let ans = 0;
    for (let i = l; i <= r; i++)
        if (check(i))
            ans += 1;
            
    return ans;

}

// Driver function
let l = 10; 
let r = 20;
document.write(countIn(l, r));
        
// This code is contributed by sravan kumar

</script>

Output: 

5

Time Complexity: O((r-l) * log10r), where r represents the upper limit of the range and l denotes the lower limit of the given range
Auxiliary Space: O(1), no extra space is required, so it is a constant.


Practice Tags :

Similar Reads