java经典题之丑数

LeetCode一个比较经典的题目,判断一个数是不是丑数,输入为32位int类型整数,丑数的概念是只包含质因数2、3、5的正整数。如果该数是丑数,返回真,否则返回假。
我的思路首先是负数和0都不对,所以返回假。其次输入为1时,是真。故将其分为三类,第三类里面对输入进行判断,看是否可以除以2、3、5的余数为0,如果某一种方法为0时,输入除以其相同的质因子,然后嵌套循环,直至输入为1,返回为真,否则返回为假。

public class Choushu263 {
    public static void main(String[] args) {
        Choushu263 choushu263 = new Choushu263();
        boolean flag = choushu263.isUgly(14);
        System.out.println(flag);
    }
    public boolean isUgly(int n) {
        boolean flag = false;
        if(n <= 0) {
            flag = false;
        }
        else if(n == 1) {
            flag = true;
        }
        else {
            if (n % 2 == 0) {
                n = n / 2;
                flag = isUgly(n);
            }
            else if (n % 3 == 0) {
                n = n / 3;
                flag = isUgly(n);
            }
            else if (n % 5 == 0) {
                n = n / 5;
                flag = isUgly(n);
            }
        }
        return flag;
    }
}

你可能感兴趣的:(java,开发语言,丑数)