Python Program for Check if all digits of a number divide it
Last Updated :
13 Apr, 2023
Given a number n, find whether all digits of n divide it or not.
Examples:
Input : 128
Output : Yes
128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
Input : 130
Output : No
We want to test whether each digit is non-zero and divides the number. For example, with 128, we want to test d != 0 && 128 % d == 0 for d = 1, 2, 8. To do that, we need to iterate over each digit of the number.
python3
def checkDivisibility(n, digit) :
return (digit ! = 0 and n % digit = = 0 )
def allDigitsDivide( n) :
temp = n
while (temp > 0 ) :
digit = temp % 10
if ((checkDivisibility(n, digit)) = = False ) :
return False
temp = temp / / 10
return True
n = 128
if (allDigitsDivide(n)) :
print ( "Yes" )
else :
print ( "No" )
|
Time Complexity: O(log10n), where n represents the given integer.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Approach : Using str(),list(),map() and len() methods
Python3
n = 128
x = str (n)
a = list ( map ( int , x))
c = 0
for i in a:
if (n % i = = 0 ):
c + = 1
if (c = = len (a)):
print ( "Yes" )
else :
print ( "No" )
|
Time Complexity: O(nlogn)
Auxiliary Space: O(n)
Please refer complete article on Check if all digits of a number divide it for more details!
Approach#3: Using math
This approach is to factorize the number and check if each factor divides the number. If any factor of the number is not a digit or does not divide the number, then the answer is ‘No’. Otherwise, the answer is ‘Yes’.
Algorithm
1. Take the input number as n.
2. Factorize the number into a list of prime factors.
3. Traverse each factor of the number.
4. Check if the factor is a digit and divides the number.
5. If any factor is not a digit or does not divide the number, return ‘No’.
6. Otherwise, return ‘Yes’.
Python3
from math import sqrt
def factorize(n):
factors = []
while n % 2 = = 0 :
factors.append( 2 )
n = n / / 2
for i in range ( 3 , int (sqrt(n)) + 1 , 2 ):
while n % i = = 0 :
factors.append(i)
n = n / / i
if n > 2 :
factors.append(n)
return factors
def check_divide(n):
factors = factorize(n)
for factor in factors:
if factor < 1 or factor > 9 or n % factor ! = 0 :
return 'No'
return 'Yes'
n = 128
print (check_divide(n))
|
Time Complexity: O(sqrt(n) log n), where n is the input number.
Auxiliary Space: O(sqrt(n)), where n is the input number.
Share your thoughts in the comments
Please Login to comment...