题目

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.

思路

没什么好说的,就是做题之前百度了一下下什么是“prime factors”。

代码

class Solution {
public:
    bool isUgly(int num) {
        if (num <= 0)
        {
            return false;
        }
        
        if (1 == num)
        {
            return true;
        }
            
        int pNum = num;
        
        while (pNum % 5 == 0)
        {
            pNum /= 5;
        }
        while (pNum % 3 == 0)
        {
            pNum /= 3;
        }
        while (pNum % 2 == 0)
        {
            pNum /= 2;
        }
        
        if (pNum == 1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
};

总结

这道题本身不难,但让我“Time Limit Exceeded”好几次,我以为是代码复杂度太高,还改进了好几个版本,最后发现是没有对 num <= 0 进行处理。


chenhong2018
2 声望0 粉丝