我需要一种方法来返回数组中的素数。
所以如果给定: primeArray(5)
应该返回这样的数组:(2, 3, 5)
出于某种原因,这似乎对我不起作用:
public static int[] primeArray(int numFind)
{
//determines the size of the array returned
int primeTotal = 0;
//loop to find total prime numbers
for (int j = 1; j <= numFind; j ++)
{
if (isPrime(j))
primeTotal +=1;
}
//declare array to be returned
int[] numA = new int[primeTotal];
//current index of prime number
int iP = 0;
//loop to add prime elements to array
for (int x = 1; x <= numFind; x ++)
{
if (isPrime(x))
{
numA[iP]=x;
iP++; // <--- THIS IS CAUSING ME PROBLEMS
}
}
return numA;
}
public static boolean isPrime(int n)
{
for (int i = 2; i < n; i++)
{
if(n%i==0)
return false;
}
return true;
}
这是我用来测试我的代码的:
int[] num = primeArray(11);
System.out.println(num[0]);
System.out.println(num[1]);
但是对于输出,我得到了这个:
1
2
但是,如果我将 iP++ 注释掉;比 if 语句最终决定仅在素数作为参数传递时才执行: isPrime(j) 但随后 if 破坏了 primeArray 方法的全部目的,因为我需要 primeArray 方法返回一个素数数组。