丑数 就是只包含质因数 2
、3
和 5
的正整数。
给你一个整数 n
,请你判断 n
是否为 丑数 。如果是,返回 true
;否则,返回 false
。
示例 1:
输入:n = 6 输出:true 解释:6 = 2 × 3
示例 2:
输入:n = 1 输出:true 解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。习惯上将其视作第一个丑数。
示例 3:
输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7
。
提示:
-231 <= n <= 231 - 1
- 若
n < 1
,说明 n 一定不是丑数,返回 false。 - 若
n % 2 == 0
,说明 2 是 n 的因子,此时应n /= 2
,然后继续判断 n 除以 2 后的值的因子。 - 若
n % 3 == 0
,说明 3 是 n 的因子,此时应n /= 3
,然后继续判断 n 除以 3 后的值的因子。 - 若
n % 5 == 0
,说明 5 是 n 的因子,此时应n /= 5
,然后继续判断 n 除以 5 后的值的因子。 - 最后,判断 n 是否等于 1,若是,说明 n 的因子只可能包含 2、3、5,返回 true;否则返回 false。
class Solution:
def isUgly(self, n: int) -> bool:
if n < 1:
return False
for x in [2, 3, 5]:
while n % x == 0:
n //= x
return n == 1
class Solution {
public boolean isUgly(int n) {
if (n < 1) return false;
while (n % 2 == 0) {
n /= 2;
}
while (n % 3 == 0) {
n /= 3;
}
while (n % 5 == 0) {
n /= 5;
}
return n == 1;
}
}
class Solution {
public:
bool isUgly(int n) {
if (n < 1) return false;
while (n % 2 == 0) {
n /= 2;
}
while (n % 3 == 0) {
n /= 3;
}
while (n % 5 == 0) {
n /= 5;
}
return n == 1;
}
};
/**
* @param {number} n
* @return {boolean}
*/
var isUgly = function (n) {
if (n < 1) return false;
while (n % 2 === 0) {
n /= 2;
}
while (n % 3 === 0) {
n /= 3;
}
while (n % 5 === 0) {
n /= 5;
}
return n === 1;
};
func isUgly(n int) bool {
if n < 1 {
return false
}
for _, x := range []int{2, 3, 5} {
for n%x == 0 {
n /= x
}
}
return n == 1
}
class Solution {
/**
* @param Integer $n
* @return Boolean
*/
function isUgly($n) {
while ($n) {
if ($n % 2 == 0) $n = $n / 2;
else if ($n % 3 == 0) $n = $n / 3;
else if ($n % 5 == 0) $n = $n / 5;
else break;
}
return $n == 1;
}
}