LeetCode第263題(Ugly Number)
2158 ワード
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.
整数の質量因子が2,3,5しかない場合、この数をUgly Numberと呼ぶ.また,1はUgly Numberとも考えられる.
この問題は比較的簡単ですが、一度に正しいことをしたいなら、いろいろな状況をよく考えなければなりません.最初、私のコードはこう書きました.
提出後、時間制限を超えていることに気づきました.よく考えてみるとnum=0の場合,コード内の各whileループはデッドループである.だからもう一つ追加します.
これでコードに問題はありません.
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.
整数の質量因子が2,3,5しかない場合、この数をUgly Numberと呼ぶ.また,1はUgly Numberとも考えられる.
この問題は比較的簡単ですが、一度に正しいことをしたいなら、いろいろな状況をよく考えなければなりません.最初、私のコードはこう書きました.
bool isUgly(int num)
{ while(num % 2 == 0) { num /= 2; }
while(num % 3 == 0)
{ num /= 3; }
while(num % 5 == 0)
{ num /= 5; }
return num == 1;
}
提出後、時間制限を超えていることに気づきました.よく考えてみるとnum=0の場合,コード内の各whileループはデッドループである.だからもう一つ追加します.
bool isUgly(int num)
{
if(num <= 0) return false;
while(num % 2 == 0)
{
num /= 2;
}
while(num % 3 == 0)
{
num /= 3;
}
while(num % 5 == 0)
{
num /= 5;
}
return num == 1;
}
これでコードに問題はありません.