如何使数组的范围与数字的素数的数量相同

时间:2011-06-03 06:22:31

标签: java factorization

我可以得到一个数字的素数因子,但在代码中,

static int[] factorsOf (int val) {
  int index = 0;
  int []numArray = new int[5];

  System.out.println("\nThe factors of " + val + " are:");
  for(int i=1; i <= val; i++)
  {
      if(val % i == 0)
      {   
          numArray [index] = i;
          val=val/i;
          index++;
      }
  }
  return numArray;
}

说一个数字是21,所以我得到1,3,7,0,0,因为我决定数组的范围是5,我怎么能将0增加,使它变成1,3,7?

1 个答案:

答案 0 :(得分:0)

要直接回答您的问题,请使用:

int[] newArray = new int[3];
System.arraycopy(numArray, 0, newArray, 0, index);
return newArray;

然而,这不可扩展。以下是使用java的Collections框架轻松完成任何大小的结果集的方法:

static int[] factorsOf (int val) {
    List<Integer> primes = new ArrayList<Integer>();

    System.out.println("\nThe factors of " + val + " are:");
    for(int i=1; i <= val; i++) {
        if(val % i == 0) {   
            primes.add(i);
            val=val/i;
        }
     }
     return primes.toArray();
}