leetcode 263. Ugly Number 丑数

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 
#include 
#include 
#include 
#include 
#include 
#include 

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;
    }
};

你可能感兴趣的:(leetcode,For,Java,leetcode,For,C++,需要好好想一下的题目,DP动态规划)