素数を配列で返すメソッドが必要です。
したがって、与えられた場合: 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++ をコメントアウトした場合。isPrime(j) で素数がパラメーターとして渡された場合にのみ if ステートメントが最終的に実行することを決定するよりも、素数の配列を返すには primeArray メソッドが必要なため、 PrimeArray メソッドの目的全体が無効になります。