丑数

丑数

CategoryDifficultyLikesDislikes
algorithmsEasy (50.48%)414-
Tags

math

Companies

Unknown

丑数就是只包含质因数 235 的正整数。

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false

示例 1:

1
2
3
输入:n = 6
输出:true
解释:6 = 2 × 3

示例 2:

1
2
3
输入:n = 1
输出:true
解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。习惯上将其视作第一个丑数。

示例 3:

1
2
3
输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。

提示:

  • -2<sup>31</sup> <= n <= 2<sup>31</sup> - 1

Discussion | Solution

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
struct Solution;

// @lc code=start
impl Solution {
    /// ## 解题思路
    /// - 递归
    pub fn is_ugly0(n: i32) -> bool {
        match n {
            0 => false,
            1 | 2 | 3 | 5 => true,
            _ => {
                (n % 2 == 0 && Solution::is_ugly(n / 2))
                    || (n % 3 == 0 && Solution::is_ugly(n / 3))
                    || (n % 5 == 0 && Solution::is_ugly(n / 5))
            }
        }
    }
    /// - 迭代
    pub fn is_ugly(n: i32) -> bool {
        match n {
            0 => false,
            1 | 2 | 3 | 5 => true,
            mut n => {
                for p in [2, 3, 5] {
                    while n % p == 0 {
                        n /= p;
                    }
                }
                n == 1
            }
        }
    }
}
// @lc code=end

updatedupdated2024-06-052024-06-05