求第n个丑数

题目描述:


丑数
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。


输入描述:

20

输出描述:

36

代码实现:

import java.util.Scanner;
import java.util.TreeSet;

public class test3 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int  n=sc.nextInt();
        if(n<=0){
            return;
        }
        int a=0,b=0,c=0;
        int[] num=new int[n+1];
        num[0]=1;
        for(int i=1;i<n;i++){
            int n1=num[a]*2;
            int n2=num[b]*3;
            int n3=num[c]*5;
            num[i]=Math.min(n1,Math.min(n2,n3));
            while(num[a]*2<=num[i])a++;
            while(num[b]*3<=num[i])b++;
            while(num[c]*5<=num[i])c++;
        }
        System.out.println(num[n-1]);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。