把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
代码
解法一
所谓一个数m是另一个数n的因子,是指n能被m整除,也就是说n%m==0.
public static int[] findUglyNumbers(int n) {
if (n <= 0) {
return null;
}
int[] result = new int[n];
result[0] = 1;
int index = 1;
int calNumber = 1;
while (index < n) {
calNumber++;
// 是不是丑数都要计算一次
if (isUglyNumber(calNumber)) {
result[index] = calNumber;
index++;
}
}
return result;
}
/**
* 判断一个数是否是丑数,即只包含因子2,3,5的数,即
* 如果可以被2整除,就连续除以2,直到不能被2整除为止
* 如果可以被3整除,就连续除以3,直到不能被3整除为止
* 如果可以被5整除,就连续除以5,直到不能被5整除为止
<本文发布于:2024-02-03 23:47:49,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170697861251779.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |