题目:
用例:
代码:
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
List elements = new LinkedList();//因为java当中创建数组时大小必须固定,而你这里的需求是输入元素个数不定,所以可以考虑先用List之类的集合类来存储输入元素,等输入结束时候再转为数组。
int i =0;
while (in.hasNext()){
int element = in.nextInt();
if(element==0){
break;
}else {//循环输入数字
elements.add(element);
}
}
for (Object a:elements) {取出每一个数字作为参数传入方法
findUgly(Integer.parseInt(a.toString()));//Object要转换成int不要忘了
}
}
public static void findUgly(int n){找到第n个丑数
int flag = 0;
int count ;
for (count = 1; flag <n ; count++) {
boolean juge = isUgly(count);//判断当前数字是否是丑数
if(juge){
flag++;
}
}
count = count-1;
if (n%10 ==1){
System.out.println("The "+n+"st humble number is "+count+".");
}else if(n%10 ==2){
System.out.println("The "+n+"nd humble number is "+count+".");
}else if(n%10 ==3){
System.out.println("The "+n+"rd humble number is "+count+".");
}else {
System.out.println("The "+n+"th humble number is "+count+".");
}
}
public static boolean isUgly(int count){//判断是否是丑数函数
while (count % 2 == 0) {
count /= 2;
}
while (count % 3 == 0) {
count /= 3;
}
while (count % 5 == 0) {
count /= 5;
}
while (count % 7 ==0){//丑数定义不该有7的,但是题目如此只能这么写了
count /=7;
}
return count == 1 ? true : false;
}
我这道题是有问题的,丑数定义 质因子不包含7,但是为了做题还是把7算进去了,大家可以在判断是否是丑数的函数中去掉判断7的条件