[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 factor 7.

Note:

  1. 1 is typically treated as an ugly number.
  2. 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 题目汇总

 

 

posted @ 2018-10-09 02:02  轻风舞动  阅读(392)  评论(0编辑  收藏  举报