[LeetCode]263. Ugly Number

Problem

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Example 1:

Input: 6
Output: true
Explanation: 6 = 2 × 3
Example 2:

Input: 8
Output: true
Explanation: 8 = 2 × 2 × 2
Example 3:

Input: 14
Output: false
Explanation: 14 is not ugly since it includes another prime factor 7.

Note:

  • 1 is typically treated as an ugly number.
  • Input is within the 32-bit signed integer range: [−2^31, 2^31 − 1].

编写一个程序,用于判断一个数是否是丑数.丑数定义:因子只包括2,3,5的正数.

Solution

Analysis

给定输入为int型数据,带符号;判断一个数是否是丑数. 可以使用循环或者递归方法.

Code

循环方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
bool isUgly(int num) {
if (num <= 0) return false;// 负数特殊处理
while (num != 1){
if (num % 2 == 0)
num /= 2;
else if (num % 3 == 0)
num /= 3;
else if (num % 5 == 0)
num /= 5;
else
return false;
}

return true;
}
};

递归方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
bool isUgly(int num) {
if (num <= 0) return false;// 负数特殊处理

if (num == 1) return true;

if (num % 2 == 0)
return isUgly(num/2);
else if (num % 3 == 0)
return isUgly(num/3);
else if (num % 5 == 0)
return isUgly(num/5);
else
return false;
}
};
您的支持就是我更新的最大动力!谢谢!