Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmCount numbers in range L-R that are divisible by all of its...

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

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.

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Nokonwaba Nkukhwana
Experience as a skilled Java developer and proven expertise in using tools and technical developments to drive improvements throughout a entire software development life cycle. I have extensive industry and full life cycle experience in a java based environment, along with exceptional analytical, design and problem solving capabilities combined with excellent communication skills and ability to work alongside teams to define and refine new functionality. Currently working in springboot projects(microservices). Considering the fact that change is good, I am always keen to new challenges and growth to sharpen my skills.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments