n = int(input("n: "))
def ugly_number(n):
while n % 2 != 0:
n = n/2
while n % 3 != 0:
n = n/3
while n % 5 != 0:
n = n/5
if n == 1:
return True
else: return False
print(ugly_number(n))
您必须执行while n%mod == 0
而不是!= 0
,因为那样的话,您就是将任何不可分割的数字除以0
,而不要触摸任何可分割的数字。
您的条件倒退。您需要将数字除以质数2
,3
和5
,以获得剩余因子。如果结果因子不是1
,则它必须具有其他质数因子。
def ugly_number(n):
while n % 2 == 0:
n = n/2
while n % 3 == 0:
n = n/3
while n % 5 == 0:
n = n/5
return n == 1
for number in [6, 8, 14]:
print(number, ugly_number(number))
6 True
8 True
14 False