• Leecode刷题之旅-C语言/python-263丑数


    /*
     * @lc app=leetcode.cn id=263 lang=c
     *
     * [263] 丑数
     *
     * https://leetcode-cn.com/problems/ugly-number/description/
     *
     * algorithms
     * Easy (44.82%)
     * Total Accepted:    7K
     * Total Submissions: 15.7K
     * Testcase Example:  '6'
     *
     * 编写一个程序判断给定的数是否为丑数。
     * 
     * 丑数就是只包含质因数 2, 3, 5 的正整数。
     * 
     * 示例 1:
     * 
     * 输入: 6
     * 输出: true
     * 解释: 6 = 2 × 3
     * 
     * 示例 2:
     * 
     * 输入: 8
     * 输出: true
     * 解释: 8 = 2 × 2 × 2
     * 
     * 
     * 示例 3:
     * 
     * 输入: 14
     * 输出: false 
     * 解释: 14 不是丑数,因为它包含了另外一个质因数 7。
     * 
     * 说明:
     * 
     * 
     * 1 是丑数。
     * 输入不会超过 32 位有符号整数的范围: [−2^31,  2^31 − 1]。
     * 
     * 
     */
    bool isUgly(int num) {
        if (num <= 0){
                return false;
            }
            //如果5是当前num的因子
            while (num % 5 == 0) {
                num /= 5;
            }
            //如果3是当前num的因子
            while (num % 3 == 0) {
                num /= 3;
            }
            //如果2是当前num的因子
            while (num % 2 == 0) {
                num /= 2;
            }
            return num == 1;
        }

    其实就是如果有2,3,5的因子就一直分解下去。最后如果分解到1的话那么他就是丑数,否则不是。

    ---------------------------------------------------------------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=263 lang=python3
    #
    # [263] 丑数
    #
    # https://leetcode-cn.com/problems/ugly-number/description/
    #
    # algorithms
    # Easy (44.82%)
    # Total Accepted:    7K
    # Total Submissions: 15.7K
    # Testcase Example:  '6'
    #
    # 编写一个程序判断给定的数是否为丑数。
    # 
    # 丑数就是只包含质因数 2, 3, 5 的正整数。
    # 
    # 示例 1:
    # 
    # 输入: 6
    # 输出: true
    # 解释: 6 = 2 × 3
    # 
    # 示例 2:
    # 
    # 输入: 8
    # 输出: true
    # 解释: 8 = 2 × 2 × 2
    # 
    # 
    # 示例 3:
    # 
    # 输入: 14
    # 输出: false 
    # 解释: 14 不是丑数,因为它包含了另外一个质因数 7。
    # 
    # 说明:
    # 
    # 
    # 1 是丑数。
    # 输入不会超过 32 位有符号整数的范围: [−2^31,  2^31 − 1]。
    # 
    # 
    #
    class Solution:
        def isUgly(self, num: int) -> bool:
            for p in 2, 3, 5:
                while num % p == 0 < num:
                    num /= p
            return num == 1
  • 相关阅读:
    16解释器模式Interpreter
    15适配器模式Adapter
    14桥接模式Bridge
    13组合模式Composite
    12外观模式Facade
    11代理模式Proxy
    10享元模式Flyweight
    09观察者模式ObServer
    08策略模式Strategy
    07装饰模式Decorator
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10557305.html
Copyright © 2020-2023  润新知