丑数 就是只包含质因数 2
、3
、5
的正整数
Emmmm 其实第一次看到这个概念我是懵逼的 这最大不就是三数的乘积吗
后来了解到算术基本原理 得知 对于每一个整数 都可以将其分解为若干素数的乘积(唯一)
也就是说每一个数都可以写成若干质数(素数)的乘积 且 质因子可以重复
那么丑数即可以写为:
显然 若一个数为丑数 则这个数除以x个2,y个3,z个5便等于1
那么我们只要在保证每次运算为整除的情况下轮流除以这三个数 直到该数无法再被这三个数整除为止 判断该数是否为1即可
上代码:
bool isUgly(int n) {
if(n<1)
{
return false;
}
vector<int>temp={2,3,5};
for(int x:temp)
{
while(n%x==0)
{
n/=x;
}
}
if(n==1)
{
return true;
}
return false;
}