[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
.
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 题目汇总