Description:
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.
Example 1:
Input: 6
Output: true
Explanation: 6 = 2 × 3
Example 2:
Input: 8
Output: true
Explanation: 8 = 2 × 2 × 2
Example 3:
Input: 14
Output: false
Explanation: 14 is not ugly since it includes another prime factor 7.
Note:
- 1 is typically treated as an ugly number.
- Input is within the 32-bit signed integer range: [−231, 231 − 1].
题意:给定一个数字,判断是否为ugly number;其定义是:
- 是一个正整数
- 其素数因式分解中,仅能包含素数2,3或5
解法:首先,根据第一个要求我们可以排除掉小于1的所有数都不是ugly number;对于1来说虽然没有素数的因式分解,但其是一个ugly number;最后,我们只需要计算是否满足第二个条件即可,可以将其进行素数的因式分解;
Java
class Solution {
public boolean isUgly(int num) {
if (num == 1) return true;
if (num < 1 ) return false;
if (num % 2 == 0) return num / 2 == 1 ? true : isUgly(num / 2);
if (num % 3 == 0) return num / 3 == 1 ? true : isUgly(num / 3);
if (num % 5 == 0) return num / 5 == 1 ? true : isUgly(num / 5);
return false;
}
}