题目描述
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 6 输出:true 解释:6 = 2 × 3 示例 2:
输入:n = 8 输出:true 解释:8 = 2 × 2 × 2 示例 3:
输入:n = 14 输出:false 解释:14 不是丑数,因为它包含了另外一个质因数 7 。 示例 4:
输入:n = 1 输出:true 解释:1 通常被视为丑数。
提示:
-2^31 <= n <= 2^31 - 1 来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/ug… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解思路
- 任何一个丑数都是由==>丑数=,k是非负整数。
- 最小的丑数应该是=1。
- 所以对于非正整数的n来说都不是丑数。
- 只要n可以分解成2×2×2×2...×3×3×3×3...×5×5×5×5...就是一个丑数。
- 我们可以通过除法对n整除,直到n被除剩1、2、3、5中的一个说明n为丑数。
- 整除期间如果除完结果不能被2,3,5中任何一个数整除,说明不是一个丑数。
题解代码
* @lc app=leetcode.cn id=263 lang=javascript
*
* [263] 丑数
*/
// @lc code=start
/**
* @param {number} n
* @return {boolean}
*/
var isUgly = function(n) {
if (n <= 0) return false;
while (true) {
//n除到剩1或2或3或5时即为最小质数了,说明是丑数
if (n===1 || n===2 || n===3 || n===5) {
return true;
}
//可以被2/3/5整除就取整除结果继续,如果都不会被整除即说明n不是丑数
if (n%2 === 0) {
n /= 2;
}else if (n%3 === 0) {
n /= 3;
}else if (n%5 === 0) {
n /= 5;
}else{
return false;
}
}
};
// @lc code=end