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.
Solution1: recursive
public class Solution { public boolean isUgly(int num) { if (num < 1) { return false; } if (num == 1) { return true; } if (num % 2 == 0) { return isUgly(num / 2); } if (num % 3 == 0) { return isUgly(num / 3); } if (num % 5 == 0) { return isUgly(num / 5); } return false; } }
Solution2: iterative
public class Solution { public boolean isUgly(int num) { int div = 2 * 3 * 5; while (num > 0 && div > 1) { if (num % div == 0) { num /= div; } if (num % 2 != 0 && div % 2 == 0) { div /= 2; } if (num % 3 != 0 && div % 3 == 0) { div /= 3; } if (num % 5 != 0 && div % 5 == 0) { div /= 5; } } return num == 1; } }
No comments:
Post a Comment