week8
题目
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.
原题地址:https://leetcode.com/problems/ugly-number/description/
解析
题目要求判断给定的数分解为质数,这些质数是否只包含2,3,5,是返回true,否则返回false。
大致思路是将该数分解为 的形式,其中a,b,c,d为正整数,检查d是否为1,是则质数中只包含2,3,5,返回true,反之返回false。
易错点
题目中明确指明1为ugly number,而0没有说明,容易将其忽略,事实证明0不视为ugly number。在下面编程实现中如果忘记将0特殊考虑则会陷入死循环。
代码
class Solution {
public:
bool isUgly(int num) {
if (num == 0) {
return false;
}
if (num == 1) {
return true;
}
while (num != 1) {
if (num % 2 == 0) {
num /= 2;
}
else if (num % 3 == 0) {
num /= 3;
}
else if (num % 5 == 0) {
num /= 5;
}
else {
break;
}
}
if (num == 1) {
return true;
}
else {
return false;
}
}
};