2019-02-04

作者: ruicore | 来源:发表于2019-02-04 13:19 被阅读0次
    LeetCode 263. Ugly Number.jpg

    LeetCode 263. Ugly Number

    Description

    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 is typically treated as an ugly number.
    Input is within the 32-bit signed integer range: [−231, 231 − 1].

    描述

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

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

    示例 1:

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

    输入: 8
    输出: true
    解释: 8 = 2 × 2 × 2
    示例 3:

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

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

    思路

    • 根据题意丑数一定可以写成 Num = 2^i*3^j*5^k,\quad i,j,k ∈ [0,+∞)
    • 我们依次从给定的数字中去除因子2,3,5 如果给定的数符合丑数的条件,那么最后剩下的数字一定是1,如果不是1,说明给定的数字不是丑数.
    # -*- coding: utf-8 -*-
    # @Author:             何睿
    # @Create Date:        2019-02-03 09:30:18
    # @Last Modified by:   何睿
    # @Last Modified time: 2019-02-03 10:05:52
    
    
    class Solution:
        def isUgly(self, num):
            """
            :type num: int
            :rtype: bool
            """
            if num <= 0: return False
            for factor in [2, 3, 5]:
                # 用给定的数模上给定的因子,如果结果为0说明还能从
                # 给定的数字中至少分解出一个当前因子
                # 如果不为零,我们用当前的数给下一个因子取模
                while not num % factor:
                    num /= factor
            # 如果是丑数,那么最后的结果一定是1
            if num == 1: return True
            return False
    

    源代码文件在这里.
    ©本文首发于何睿的博客,欢迎转载,转载需保留文章来源,作者信息和本声明.

    相关文章

      网友评论

        本文标题:2019-02-04

        本文链接:https://www.haomeiwen.com/subject/kzupsqtx.html