题目描述:
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 6
输出:true
解释:6 = 2 × 3
链接: https://leetcode-cn.com/problems/ugly-number/.
解题思路:
我觉得这个很像斐波那契数列,我用了递归思想,要判断n是不是丑叔,就要判断n/2、n/3、n/5是不是丑数(不能整除的就不判断了,比如n/2不能整除,就只判断n/3、n/5是不是丑数),这样就递归下去,就完事了。这是自顶向下,自底向上可以省时间。
c++代码:
class Solution {
public:
bool isUgly(int n) {
if(n==2||n==3||n==5||n==1) return true;
if(n==0) return false;
if(n%2==0&&n%3==0&&n%5==0){
return isUgly(n/2)||isUgly(n/3)||isUgly(n/5);
}
else if(n%2==0&&n%3!=0&&n%5==0){
return isUgly(n/2)||isUgly(n/5);
}
else if(n%2==0&&n%3==0&&n%5!=0){
return isUgly(n/2)||isUgly(n/3);
}
else if(n%2!=0&&n%3==0&&n%5==0){
return isUgly(n/3)||isUgly(n/5);
}
else if(n%2!=0&&n%3!=0&&n%5==0){
return isUgly(n/5);
}
else if(n%2!=0&&n%3==0&&n%5!=0){
return isUgly(n/3);
}
else if(n%2==0&&n%3!=0&&n%5!=0){
return isUgly(n/2);
}
else return false;
}
};