丑数
丑数 就是只包含质因数 2、3 和 5 的正整数。
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
示例 1:
输入:n = 6
输出:true
解释:6 = 2 × 3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ugly-number
一开始的思路是先求出这个数的所有质数,再将所有质数与2,3,5进行比较,但实现起来不那么顺利,看了题解。
通过数学方法可知,质数只包含2,3,5,说明是由2,3,5构成的数,其中2,3,5的个数不确定,所以每次判断是否能将2,3,5整除,然后再变化值,直到最后的值变为1,说明是符合要求的数,否则就不是。
当然,如果n小于等于0,当然不是丑数。
class Solution {
public boolean isUgly(int n) {
boolean flag = false;
if(n<=0)
return false;
int[] a = {2,3,5};
for(int i=0;i<a.length;i++)
{
while(n%a[i]==0){
n/=a[i];
}
}
if(n==1)
flag=true;
return flag;
}
}
果然,做题之前要先分析数字的特征,算法尽头是数学啊。