Ugly Number – LeetCode

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.

So we need to find a number has any factors other than 2, 3 and 5. The logical thinking would be to get all the factors of the number and see if list contains anything other than 2, 3 and 5.

However, the other way to tackle this problem is to devide the number by these factors. If the number has any other factor, the module for that would be > 1. If the module is 1, then we can assume that, the number does not have any other factor than 2, 3 or 5.

Simple method could be written in java as:

public boolean isUgly(int num) {
if(num<=0) return false;
while(num%2==0) num = num/2;
while(num%3==0) num = num/3;
while(num%5==0) num = num/5;

return num==1;
}

Advertisements