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

One thought on “Ugly Number – LeetCode

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s