Given a positive integer n. The task is to find count of digits of number which evenly divides the number n.
Examples:
Input : n = 12 Output : 2 1 and 2 divide 12. Input : n = 1012 Output : 3 1, 1 and 2 divide 1012.
The idea is to find each digit of the number n by modulus 10 and then check whether it divides n or not. Accordingly, increment the counter. Notice that the digit can be 0, so take care of that case.
Below is implementation of this approach:
C++
// C++ program to count number of digits // that divides the number. #include <bits/stdc++.h> using namespace std;
// Return the number of digits that divides // the number. int countDigit( int n)
{ int temp = n, count = 0;
while (temp != 0) {
// Fetching each digit of the number
int d = temp % 10;
temp /= 10;
// Checking if digit is greater than 0
// and can divides n.
if (d > 0 && n % d == 0)
count++;
}
return count;
} // Driven Program int main()
{ int n = 1012;
cout << countDigit(n) << endl;
return 0;
} |
Java
// Java program to count number of digits // that divides the number. class Test {
// Return the number of digits that divides
// the number.
static int countDigit( int n)
{
int temp = n, count = 0 ;
while (temp != 0 ) {
// Fetching each digit of the number
int d = temp % 10 ;
temp /= 10 ;
// Checking if digit is greater than 0
// and can divides n.
if (d > 0 && n % d == 0 )
count++;
}
return count;
}
// Driver method
public static void main(String args[])
{
int n = 1012 ;
System.out.println(countDigit(n));
}
} |
Python3
# Python3 code to count number of # digits that divides the number. # Return the number of digits # that divides the number. def countDigit (n):
temp = n
count = 0
while temp ! = 0 :
# Fetching each digit
# of the number
d = temp % 10
temp / / = 10
# Checking if digit is greater
# than 0 and can divides n.
if d > 0 and n % d = = 0 :
count + = 1
return count
# Driven Code n = 1012
print (countDigit(n))
# This code is contributed by "Sharad_Bhardwaj". |
C#
// C# program to count number of digits // that divides the number. using System;
class GFG {
// Return the number of digits that
// divides the number.
static int countDigit( int n)
{
int temp = n, count = 0;
while (temp != 0) {
// Fetching each digit of
// the number
int d = temp % 10;
temp /= 10;
// Checking if digit is
// greater than 0 and can
// divides n.
if (d > 0 && n % d == 0)
count++;
}
return count;
}
// Driver method
public static void Main()
{
int n = 1012;
Console.Write(countDigit(n));
}
} // This code is contributed by parashar. |
PHP
<?php // PHP program to count // number of digits // that divides the number. // Return the number of // digits that divides // the number. function countDigit( $n )
{ $temp = $n ;
$count = 0;
while ( $temp != 0)
{
// Fetching each digit
// of the number
$d = $temp % 10;
$temp /= 10;
// Checking if digit
// is greater than 0
// and can divides n.
if ( $d > 0 && $n % $d == 0)
$count ++;
}
return $count ;
} // Driver Code
$n = 1012;
echo countDigit( $n ), "\n" ;
// This code is contributed by ajit ?> |
Javascript
<script> // javascript program to count number of digits // that divides the number. // Return the number of digits that divides // the number.
function countDigit(n)
{ var temp = n, count = 0;
while (temp != 0)
{
// Fetching each digit of the number
var d = temp % 10;
temp /= 10;
// Checking if digit is greater than 0
// and can divides n.
if (d > 0 && n % d == 0)
count++;
}
return count;
} // Driver method var n = 1012;
document.write(countDigit(n)); // This code is contributed by Amit Katiyar </script> |
Output:
3
Time Complexity: O(d) where d is the number of digits in a number.
Auxiliary Space: O(1)