Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.
Note that 1 is typically treated as an ugly number.
就是判断一个数据是不是丑数,直接做除法即可。
建议和leetcode 264. Ugly Number II 计算第K个丑数 和 leetcode 313. Super Ugly Number 超级丑数 一起学习
代码如下:
/*
* 不要直接求所有的质数,然后寻找素数,最后作判断,太麻烦了
* 直接循环除法即可
* */
class Solution
{
public boolean isUgly(int num)
{
if(num<=0)
return false;
if(num==1)
return true;
while(num>=2 && num%2==0)
num=num/2;
while(num>=3 && num%3==0)
num=num/3;
while(num>=5 && num%5==0)
num=num/5;
return num==1? true :false;
}
}
下面是C++的做法,不要直接寻找所有的质数,直接在原先的数据上做处理即可,代码如下:
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <string>
using namespace std;
class Solution
{
public:
bool isUgly(int num)
{
if (num <= 0)
return false;
else if (num == 1)
return true;
while (num > 1 && num % 2 == 0)
num /= 2;
while (num > 1 && num % 3 == 0)
num /= 3;
while (num > 1 && num % 5 == 0)
num /= 5;
return num == 1 ? true : false;
}
};