【LeetCode-263】Ugly Number(C++)


タイトル要求:プログラムを書いて与えられた数がugly numberかどうかを判断します.
Ugly numberは素因数が2,3,5のみを含む正の整数である.例えば、6および8はugly numberであり、14はugly numberではない.なぜなら、その質量因子は7を含むからである.
注意:1は通常ugly numberとみなされます.
問題の構想を解く:まず何が質因数なのかを理解しなければならない.質因数とは、与えられた正の整数を除去できる質数を指す.特に理解しにくいように聞こえますが、小学校の時に学んだ短除法で素因数を分解する過程をよく考えると理解できるはずです.正の整数nに対して素因数を分解する過程は一連の素数を見つけることで、これらの素数を乗じてnを得ることができます.だから本題の中のugly numberはこのような数です:nがugly numberであれば、nはもし2、いくつかの3といくつかの5を乗算するだけで得ることができます.
プログラム実装:
class Solution {
public:
    bool isUgly(int num) {
        if(num<=0)
           return 0;
        while(num%2 == 0){
            num=num/2;
        }
        while(num%3==0){
            num=num/3;
        }
        while(num%5==0){
            num=num/5;
        }
        if(num==1)
           return 1;
        else 
           return 0;
    }
};
まとめ:この問題ACは順調すぎて、初めて提出したときにnum>0の制約を加えるのを忘れたので、0と入力したときにタイムアウトすることをヒントにします.そしてif条件文を1つ追加してACにしました!うれしい