//-----------运行超时-------------https://www.jianshu.com/p/a56fc45c1c9a-----------
    //所谓一个数m是另一个数n的因子,是指n能被m整除,也就是说n%m==0.
    //根据丑数的定义,丑数只能被2,3,5整除。也就是说如果一个数能被2整除,我们把它连续除以2;
    //如果能被3整除,就连续除以3;如果能被5整除,就除以5.如果最后我们得到的是1,那么这个数就是丑数,否则不是。
    public static boolean isUgly(int number){
        while(number%2==0)
            number/=2;
        while(number%3==0)
            number/=3;
        while(number%5==0)
            number/=5;
        return number==1 ? true : false;
    }
    public static int getUglyNumber(int index){
        if(index<=0){
            return 0;
        }
        int number=0;
        int UglyFound=0;
        while(UglyFound<index){
            number++;
            if(isUgly(number)){
                ++UglyFound;
            }
        }
        return number;
    }

//https://blog.csdn.net/wszy1301/article/details/80910626
    public static int GetUglyNumber_Solution(int index){
        if(index<=0){
            return 0;
        }
        int[] res=new int[index];
        res[0]=1;//先把1放入
        int m2=0;//制乘以2的位置,假设得到一个丑数是乘以2得到的,那么下一次就是数组中的下一个丑数可能达到。
        int m3=0;
        int m5=0;
        for(int i=1;i<index;i++){
            int min=Math.min(res[m2]*2, Math.min(res[m3]*3,res[m5]*5));
            res[i]=min;
            if(min==res[m2]*2){
                              //假设res[1]是乘以2得到的丑数,那么下一次就要判断
                               //是否是res[2]乘以2可能得到丑数,所以就要++
                m2++;
            }
            if(min==res[m3]*3){
                m3++;
            }
            if(min==res[m5]*5){
                m5++;
            }
        }
        return res[index-1];
    }