我需要找到第一个n
质数并将其存储在数组中primes
。借助我在stackoverflow上发现的东西的帮助,我成功找到了第一个n
数字,但是当我尝试将它们存储在数组中时,我得到了ArrayIndexOutOfBoundsException
...
public static int[] firstNPrimes(int n) {
int[] primes = new int[n];
int ncounter = 0;
int isPrime = 2;
for (int i = 0; ncounter < n; i++) {
boolean prime = true;
for (int j = 2; j < isPrime; j++) {
if (isPrime % j == 0) {
prime = false;
break;
}
}
if (prime) {
primes[i] = isPrime;
ncounter++;
}
isPrime++;
}
return primes;
}
问题在于primes[i] = isPrime;
它应该是primes[ncounter] = isPrime;
您根本不需要i
变量,而是使用while循环:
public static int[] firstNPrimes(int n) {
int[] primes = new int[n];
int ncounter = 0;
int isPrime = 2;
while (ncounter < n) {
boolean prime = true;
for (int j = 2; j < isPrime; j++) {
if (isPrime % j == 0) {
prime = false;
break;
}
}
if (prime) {
primes[ncounter] = isPrime;
ncounter++;
}
isPrime++;
}
return primes;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句