LeetCode--263--丑数

问题描述:

编写一个程序判断给定的数是否为丑数。

丑数就是只包含质因数 2, 3, 5 的正整数

示例 1:

输入: 6
输出: true
解释: 6 = 2 × 3

示例 2:

输入: 8
输出: true
解释: 8 = 2 × 2 × 2

示例 3:

输入: 14
输出: false 
解释: 14 不是丑数,因为它包含了另外一个质因数 7

说明:

  1. 1 是丑数。
  2. 输入不会超过 32 位有符号整数的范围: [−231,  231 − 1]。

思路:用num对三个质数做除法运算,到最后能整除即为丑数。

方法1:

 1 class Solution(object):
 2     def isUgly(self, num):
 3         """
 4         :type num: int
 5         :rtype: bool
 6         """
 7         prime = [2,3,5]
 8         if num == 0 :
 9             return False
10         temp = num
11         flag = True
12         while num!= 1:#num对三个质数进行求余数运算
13             for i in prime:
14                 if num % i == 0:
15                     num /= i 
16                     flag = True
17             if not flag:#三个质数都不能被整除
18                 break
19             flag = False
20         if num == 1:
21             return True
22         return False

简洁版:

 1 class Solution(object):
 2     def isUgly(self, num):
 3         """
 4         :type num: int
 5         :rtype: bool
 6         """
 7         if num <= 0:
 8             return False
 9         for i in [2,3,5]:
10             while num % i == 0:
11                 num //= i
12         return True if num == 1 else False

2018-09-22 18:15:12

原文地址:https://www.cnblogs.com/NPC-assange/p/9690775.html