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
.
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 factor7
.
Note:
1
is typically treated as an ugly number.- Input is within the 32-bit signed integer range: [−231, 231 − 1].
写一个程序能判断一个数是不是丑陋数,丑陋数是只含有2,3,5质数因子的数。
解法:循环2,3,5,然后不停的除以这些质数,如果能整除就继续,最后剩余的数字是1的话就是丑陋数。
Java:
for (int i=2; i<6 && num>0; i++)
while (num % i == 0)
num /= i;
return num == 1;
Python:
class Solution:
# @param {integer} num
# @return {boolean}
def isUgly(self, num):
if num == 0:
return False
for i in [2, 3, 5]:
while num % i == 0:
num /= i
return num == 1
Python:
for p in 2, 3, 5:
while num % p == 0 < num:
num /= p
return num == 1
C++:
for (int i=2; i<6 && num; i++)
while (num % i == 0)
num /= i;
return num == 1;
C++:
class Solution {
public:
bool isUgly(int num) {
while (num >= 2) {
if (num % 2 == 0) num /= 2;
else if (num % 3 == 0) num /= 3;
else if (num % 5 == 0) num /= 5;
else return false;
}
return num == 1;
}
};
C++:
class Solution {
public:
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;
}
};
类似题目:
[LeetCode] 264. Ugly Number II 丑陋数 II
[LeetCode] 313. Super Ugly Number 超级丑陋数
All LeetCode Questions List 题目汇总