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