• 寻找丑数


    1、题目要求:

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

      提示:丑数= (x、y、z大于等于0的整数)

      输出第1500个丑数。

    2、设计思路:

      传统方法(1)通过创建循环,连续%2、%3、%5得出最后的余数。

                          (2)如果最终的余数为0,即可确定最终的丑数。

                          (3)确定丑数的过程中加入变量限定丑数的个数即可。

      改进方法(1)选取最小丑数1,将其分别乘2/3/5得到对应的新丑数。

          (2)分别用三个变量来表示最近一个丑数*2/*3/*5得到的丑数

          (3)当三个变量中其中的最小值被选作丑数时,该数应该自增,方便下次作为索引值继续乘对应的数据,避免数据重复乘法运算

    3、源代码:

    package cn.test.termtest.uglynumber;
    
    public class Ugly {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println(GetUglyNumber1(1500));
        }
        public static int GetUglyNumber1(int index) {
            if(index <7)
                return index;
            int ugly[] = new int[index];  //定义一个数组,用来存放每一个元素。
            ugly[0] =1;      //第一个丑数
            int m2 =0;       //最近一次乘2得到的丑数
            int m3 =0;       
            int m5 =0;
            for(int i=1; i< index;i++) {
                ugly[i] = Math.min(ugly[m2] * 2,Math.min(ugly[m3] * 3,ugly[m5] * 5));
                if(ugly[i]==ugly[m2] * 2)
                    m2++;
                if(ugly[i]==ugly[m3] * 3)
                    m3++;
                if(ugly[i]==ugly[m5] * 5)
                    m5++;
            }
            return ugly[index - 1];
        }
        
    }
  • 相关阅读:
    ajax 前台返回后台传递过来的数组
    js中push的用法
    split 的用法
    ckeditor上传图片
    FTP安装配置
    批量删除.svn文件
    Ext flex属性
    Extjs3 主题样式
    Ext.apply与Ext.applyIf
    SharePoint2010 Office Web Apps
  • 原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/13171467.html
Copyright © 2020-2023  润新知