题目描述:
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
.
Notice
Note that 1
is typically treated as an ugly number.
Example
题目思路:
Given num = 8
return true
Given num = 14
return false
将number用2,3,5整除:如果number不断被2,3,5整除并且最终得到的结果为1,那么这个number就是ugly number;反之,如果这个number最终不能用2/3/5整除,那么它就不是ugly number。
Mycode (AC = 31ms):
class Solution {
public:
/**
* @param num an integer
* @return true if num is an ugly number or false
*/
bool isUgly(int num) {
// Write your code here
if (num == 0) {
return false;
}
else if (num == 1) {
return true;
}
bool is_ugly = false;
// traverse the factors of 2,3,5
int ugly_num[3] = {2, 3, 5};
for (int i = 0; i < 3; i++) {
if (num % ugly_num[i] == 0) {
is_ugly = is_ugly || isUgly(num / ugly_num[i]);
}
}
return is_ugly;
}
};