文章目录
- 一【题目类别】
- 二【题目难度】
- 三【题目编号】
- 四【题目描述】
- 五【题目示例】
- 六【解题思路】
- 七【题目提示】
- 八【时间频度】
- 九【代码实现】
- 十【提交结果】
一【题目类别】
- 数学
二【题目难度】
- 简单
三【题目编号】
- 263.丑数
四【题目描述】
- 丑数 就是只包含质因数 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 。
六【解题思路】
- 根据题目的定义,丑数只包含2、3和5质因数,形式为:n=2a×3b×5cn=2^{a} × 3^{b} ×5^{c}n=2a×3b×5c,所以我们只需要不停的除以2、3和5,如果最后的结果为1,说明此数字的质因数没有其他数字,就是丑数,否则就不是丑数
- 还要注意负数和0不是丑数,要特判一下
- 最后返回结果即可
七【题目提示】
- −231<=n<=231−1-2^{31} <= n <= 2^{31} - 1−231<=n<=231−1
八【时间频度】
- 时间复杂度:O(logn)O(logn)O(logn),其中nnn为传入参数的大小
- 空间复杂度:O(1)O(1)O(1)
九【代码实现】
- Java语言版
class Solution {public boolean isUgly(int n) {if(n <= 0){return false;}while(n % 2 == 0){n /= 2;}while(n % 3 == 0){n /= 3;}while(n % 5 == 0){n /= 5;}return n == 1;}
}
- C语言版
bool isUgly(int n)
{if(n <= 0){return false;}while(n % 2 == 0){n /= 2;}while(n % 3 == 0){n /= 3;}while(n % 5 == 0){n /= 5;}return n == 1;
}
- Python版
class Solution:def isUgly(self, n: int) -> bool:if n <= 0:return Falsewhile n % 2 == 0:n //= 2while n % 3 == 0:n //= 3while n % 5 == 0:n //= 5return n == 1
十【提交结果】
-
Java语言版
-
C语言版
-
Python语言版