概念
只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而14,23,111则不是丑数,另外1也是丑数。
个人理解
对于一个已知的数,做下面运算:
1、循环整除2,直到商为1或者不能整除。
2、再循环整除3,直到商为1或者不能整除。
3、在循环整除5,直到商为1或者不能整除。
如果最后商为1且无余数,则为丑数。
例:正整数12
1、12/2 = 6 ,6/2 = 3,不能整除
2、3/3 = 1,没有余数,所以12是丑数。
例:正整数14
1、14/2 = 7 ,不能整除,
2、7/3,不能整除,
3、7/5,不能整除,所以14不是丑数
代码实现
public class TestUglyWord {
public static void main(String[] args) {
findUglyWord(20);
}
/**
* 生成num以内的丑数
* @param num
*/
public static void findUglyWord(int num){
int word = 1;
while(word <= num){
int temp = word;
while(temp % 2 == 0){
temp = temp / 2;
}
while(temp % 3 == 0){
temp = temp / 3;
}
while(temp % 5 == 0){
temp = temp / 5;
}
if(temp == 1){
System.out.print(word+" ");
}
word++;
}
}
}