[英]how to make the range of an array as same as the number of the prime factors of a number
我可以得到一个数字的素数,但在代码中,
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?
要直接回答您的问题,请使用:
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.