263. Ugly Number*

263. Ugly Number*

https://leetcode.com/problems/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 is typically treated as an ugly number.
  • Input is within the 32-bit signed integer range: [ 2 31 , 2 31 1 ] [−2^{31}, 2^{31} − 1] .

C++ 实现 1

思路: 首先要注意输入是有符号整数, 那么负数和 0 都被认为不是 UN. 对于正整数 num, 可以不断地使用 2, 3, 5 对其进行整除, 最后判断 num 是不是等于 1. 如果相等, 说明 num 总是以 2, 3, 5 为质因子, 如果不相等, 那么不是 UN.

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;
    }
};
发布了455 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Eric_1993/article/details/104881338
今日推荐