你知道丑数吗?

1,191 阅读2分钟
1:题目


丑数:把只包含质因子2,3,5的数称为丑数,例如2,3,4,5都是丑数,但是7,11,13,14都不是丑数(它们包含了除2,3,5以外的数),求第n个丑数,默认把1作为第一个丑数。


2:解答


首先,我们应该了解什么是因子。所谓的数m是数n的因子,是指数n可以被数m整除,即n%m=0


要判断一个数是不是为丑数。就是要判断这个数除了能被2、3、5整除,是否可以被其他数字整除,能则不是,不能则是。


也就是说如果这个数可以被2整除,就把它连续除以2;如果这个数可以被3整除,就把它连续除以3;如果这个数可以被5整除,就把它连续除以5。


从丑数的定义可以知道,一个丑数的因子只有2,3,5,那么某个丑数K肯定是另一个丑数的2倍,3倍或者5倍。


换句话说一个丑数一定由另一个丑数乘以2,或者乘以3,或者乘以5得到,那么可以从1开始乘以2,3,5,就得到2,3,5三个丑数。


例子:


假如数组中最大的数k=1


当k=1时:下一个丑数从这里面取,2*1=2;3*1=3;5*1=5;因为是2最小,所以第二个丑数是2。


当k=2时:下一个丑数从这里面取,2*2=4;3*1=3;5*1=5;因为3最小,所以第三个丑数是3。这里为什么不取 3*2=6和5*2=10;因为比它小的3*1=3;5*1=5还没有取。


当k=3时:下一个丑数从这里面取,2*2=4;3*2=6;5*1=5;因为5最小,所以第四个丑数是4。


根据上面的分析可以看出,我们不必每次都从数组的第一个丑数开始,而是分别设置 3 个变量来存储数组的下标,然后动态的去改变下标就可以了。



3:代码


如果你觉得这篇文章有用,记得分享给其他的小伙伴,大家一起进步哦~~~



扫一扫 关注我的公众号

如果你想要跟大家分享你的文章,欢迎留言投稿~

如果你喜欢,请留下你的赞哦