zoukankan      html  css  js  c++  java
  • [LeetCode]65. 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. For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.

    Note that 1 is typically treated as an ugly number.

    Credits:
    Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

    Subscribe to see which companies asked this question

     
    解法:丑数被定义为其所有的质因子只有2、3和5的正数,另外1也是丑数。因此对输入正数将其质因子2、3、5都去掉,看看结果是否是1就可以了。
    class Solution {
    public:
        bool isUgly(int num) {
            if(num > 1) {
              while(num % 2 == 0) num /= 2;
              while(num % 3 == 0) num /= 3;
              while(num % 5 == 0) num /= 5;
            }
            return num == 1;
        }
    };

    另一种写法:

    class Solution {
    public:
        bool isUgly(int num) {
            while(num > 1) {
              if(num % 2 == 0) num /= 2;
              else if(num % 3 == 0) num /= 3;
              else if(num % 5 == 0) num /= 5;
              else break;
            }
            return num == 1;
        }
    };

    第一种写法效率更高。

  • 相关阅读:
    第三次随笔作业
    第二次随笔作业
    第一次随笔
    第四次随笔作业
    第三次随笔作业
    第二次随笔作业
    第一次博客
    第四次作业
    第三次作业(2)
    第二次随笔(修改版3)
  • 原文地址:https://www.cnblogs.com/aprilcheny/p/4946870.html
Copyright © 2011-2022 走看看