我和12楼的求法是一样的,写是很好写,不过调试的时候花了比较久。 public static void numN(int n){         int length = 1;         int[] count = new int[15];         count[0] = 1;         count[1] = 3;         while(n>count[length]){             n-=count[length];             length++;             count[length] = count[length-1]*3;         }         int[] num = new int[]{2,3,5};         //这个地方不用ans存,直接输出也行         int[] ans = new int[15];         int index=0;         while(length>0){             for(int i=2;i>=1;i--){                 if(i*count[length-1]<n){                     ans[index]=num[i];                     n-=i*count[length-1];                     break;                 }                 ans[index]=2;             }             index++;             length--;         }         for(int i:ans){             if(i==0){                 break;             }             System.out.print(i);         }         System.out.println();     }