JAVA每周一题(2)——曾经诺西的笔试题
求丑数:丑数是指那些因子只含2,3,5的数。2,3,4,5,6,8,9,10,12,15是最前面的丑数,请编写一个程序,打印出第1500个丑数。要求效率要高。
欢迎大家百度,只要能整理出尽可能快的程序就行。
程序代码:
public class Perm {
int count =0;
int n=1;
public void getAll(){
while(true){
int i=n;
while(i%5==0){
i=i/5;
}
while(i%3==0){
i=i/3;
}
while(i%2==0){
i=i/2;
}
if(i==1&&n!=1)
count++;
if(count==1500)
break;
n++;
}
}
public static void main(String[] args) {
Perm p = new Perm();
p.getAll();
System.out.println(p.n);
}
}
程序代码:public class Perm {
private int a2=0,a3=0,a5=0;
private int[] a = new int[1501];
private void getNth(int n){
a[0]=1;
for(int i=1;i<=n;i++){
int temp2 = 2*a[a2];
int temp3 = 3*a[a3];
int temp5 = 5*a[a5];
int temp = temp2<temp3?temp2:temp3;
temp=temp<temp5?temp:temp5;
a[i]=temp;
if(temp2==temp)
a2++;
if(temp3==temp)
a3++;
if(temp5==temp)
a5++;
}
}
public static void main(String[] args) {
Perm p = new Perm();
p.getNth(1500);
System.out.println(p.a[1500]);
}
}是不是这个题目有点难啊,还是大家太懒了呢。