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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!