丑数-直观简单的求法

来源:互联网 发布:java什么是逻辑或 编辑:程序博客网 时间:2024/04/30 18:24
packagecom.ytx.time_and_space;
importjava.util.Scanner;
/**
 * 直观简洁的求解丑数的方法
 * 但是时间效率太低了,对每个数字
 * 都需要判断是不是丑数,对它执行求余数和除法操作
 *@authoryuantianxin
 *
 */
publicclassUglyNumber_simple {
   publicbooleanisUglyNumber(intnum) {
      while(num% 2 == 0)
            num/= 2;
      while(num% 3 == 0)
            num/= 3;
      while(num% 5 ==0)
            num/= 5;
      return(num==1) ?true: false;     
    }
   
   publicintgetUglyNumber(intn) {
      if(n<= 0) {
            return0;
      }
      
      intnumber= 0;
      
      intcount= 0;//表示这是第几个丑数的计数器,初始为零
      
      while(count< n) {
            
            number++;//从1开始找丑数,习惯上把1作为第一个丑数
            
            if(isUglyNumber(number)) {//判断是不是丑数,是的话,计数器加一
                  count++;
            }
      }
      //返回第n个丑数
      returnnumber;
    }
      publicstaticvoidmain(String[]args) {
            Scannerreader= new Scanner(System.in);
            UglyNumber_simpleob=newUglyNumber_simple();
            while(reader.hasNextInt()) {
                  intdata= reader.nextInt();
                  System.out.println("第"+ data + "丑数为 : " + ob.getUglyNumber(data));
            }
      }
}
原创粉丝点击