【算法训练】LeetCode#263 丑数

一、描述

258. 各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

丑数 就是只包含质因数 235 的正整数。

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false

示例 1:

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

示例 2:

输入:n = 1
输出:true
解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。习惯上将其视作第一个丑数。

示例 3:

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

提示:

  • -231 <= n <= 231 - 1

二、思路

根据题意可知,丑数一定是大于等于1的数,因此小于1直接false。

其次,对于任意一个数,其分解后的因数为:a*b*c*....,将2,3,5除掉后,若不为1,即不是丑数。

三、解题

Java

public class LeetCode263 {
    public boolean isUgly(int n) {
        if (n < 1){
            return false;
        }
        int []nums = new int[]{2,3,5};
        for (int num : nums){
            while (n % num == 0){
                n /= num;
            }
            if (n == 1){
                return true;
            }
        }
        return false;
    }
}

C++

bool isUgly(int n) {
    if (n <= 0){
        return false;
    }
    int nums[] = {2,3,5};
    for(int num : nums){
        while (n%num == 0){
            n /= num;
        }
        if (n == 1){
            return true;
        }
    }
    return false;
}
posted @ 2023-07-09 19:05  小拳头呀  阅读(6)  评论(0编辑  收藏  举报