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]); } }是不是这个题目有点难啊,还是大家太懒了呢。