丑数

写一个程序来检测一个整数是不是丑数

丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。

 注意事项

可以认为 1 是一个特殊的丑数。

public class Solution {
    /*
     * @param num: An integer
     * @return: true if num is an ugly number or false
     */
    public boolean isUgly(int num) {
        // write your code here
           if(num<=0)
            return false;
            else
            {
            while(num%2==0)
            num/=2;
            while(num%3==0)
            num/=3;
            while(num%5==0)
            num/=5;
            return (num==1)?true:false;
            }
    }
}

设计一个算法,找出只含素因子235 的第 n 小的数。

符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...

 注意事项

我们可以认为1也是一个丑数

public class Solution {
    /*
     * @param n: An integer
     * @return: the nth prime number as description.
     */
    public int nthUglyNumber(int n) {
        // write your code here
        List<Integer>uglys=new ArrayList<Integer>();
        uglys.add(1);
        int p2=0,p3=0,p5=0;
        for(int i=1;i<n;i++){
            int lastNumber=uglys.get(i-1);
            while(uglys.get(p2)*2<=lastNumber) p2++;
            while(uglys.get(p3)*3<=lastNumber) p3++;
            while(uglys.get(p5)*5<=lastNumber) p5++;
            uglys.add(Math.min(Math.min(uglys.get(p2)*2,uglys.get(p3)*3),uglys.get(p5)*5));
            
        }
        return uglys.get(n-1);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值