/* * @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