# Write a program to check whether a given number is an ugly number.
#
# Ugly numbers are positive numbers whose prime factors only include
# 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it
# includes another prime factor 7.
#
# Note that 1 is typically treated as an ugly number.

class Solution(object):
    # divide by 2, 3 and 5 as often as possible and then check whether we arrived at 1.
    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num == 0:
            return False

        while num % 2 == 0:
            num /= 2
        while num % 3 == 0:
            num /= 3
        while num % 5 == 0:
            num /= 5

        return num == 1

    # refactor above using for loop:
    def isUgly(self, num):
        if num <=0:
            return False
        for i in (2, 3, 5):
            while num % i == 0:
                num /= i
        return num == 1

if __name__ == "__main__":
    print Solution().isUgly(6)
    print Solution().isUgly(8)
    print Solution().isUgly(14)

# Write a program to check whether a given number is an ugly number.
#
# Ugly numbers are positive numbers whose prime factors only include
# 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it
# includes another prime factor 7.
#
# Note that 1 is typically treated as an ugly number.

class Solution(object):
    # divide by 2, 3 and 5 as often as possible and then check whether we arrived at 1.
    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num == 0:
            return False

        while num % 2 == 0:
            num /= 2
        while num % 3 == 0:
            num /= 3
        while num % 5 == 0:
            num /= 5

        return num == 1

    # refactor above using for loop:
    def isUgly(self, num):
        if num <=0:
            return False
        for i in (2, 3, 5):
            while num % i == 0:
                num /= i
        return num == 1

if __name__ == "__main__":
    print Solution().isUgly(6)
    print Solution().isUgly(8)
    print Solution().isUgly(14)

# Write a program to check whether a given number is an ugly number. # # Ugly numbers are positive numbers whose prime factors only include # 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it # includes another prime factor 7. # # Note that 1 is typically treated as an ugly number. # divide by 2, 3 and 5 as often as possible and then check whether we arrived at 1. :type num: int         :rtype: bool # refactor above using for loop: