public class PrimeGenerator {
int a[] = null;
static int m = -1; public PrimeGenerator(int max) {
int n = 0;
for (int i = 2; i <= max; i++) {
if (isPrime(i)) {
this.a[n] = i;
}
else
continue; } } public boolean hasNextPrime() {
if (m + 1 < a.length) {
return true;
} else
return false;
} public int nextPrime() {
m++;
if(m < a.length) return a[m];
else
return -1; } private boolean isPrime(int p) {
if (p == 1)
return false; int factor = p - 1;
while (factor > 1) {
if ((p % factor) == 0) {
return false;
}
factor--;
} return true;
}
}为什么在执行this.a[n] = i;的时候 报错.java.lang.NullPointerException
另:我感觉我的程序写复杂了...怎么写最简单. 一共2个方法. consturestor 用户输入max 取 2 到max 中的素数, 第一个方法.public boolean hasNextPrime() 如果有下一个素数返回 ture 没有 false , 第二个public int nextPrime() 取下一个素数 如果没有 返回-1.
多谢!!!!
int a[] = null;
static int m = -1; public PrimeGenerator(int max) {
int n = 0;
for (int i = 2; i <= max; i++) {
if (isPrime(i)) {
this.a[n] = i;
}
else
continue; } } public boolean hasNextPrime() {
if (m + 1 < a.length) {
return true;
} else
return false;
} public int nextPrime() {
m++;
if(m < a.length) return a[m];
else
return -1; } private boolean isPrime(int p) {
if (p == 1)
return false; int factor = p - 1;
while (factor > 1) {
if ((p % factor) == 0) {
return false;
}
factor--;
} return true;
}
}为什么在执行this.a[n] = i;的时候 报错.java.lang.NullPointerException
另:我感觉我的程序写复杂了...怎么写最简单. 一共2个方法. consturestor 用户输入max 取 2 到max 中的素数, 第一个方法.public boolean hasNextPrime() 如果有下一个素数返回 ture 没有 false , 第二个public int nextPrime() 取下一个素数 如果没有 返回-1.
多谢!!!!
public class PrimeGenerator {
int a[] =new int[100000];//创建一个足够大的数组,存放素数static int m = -1;public PrimeGenerator(int max) {int n = 0;
for (int i = 2; i <= max; i++) {
if (isPrime(i)) {
this.a[n] = i;
n++;//如果是素数,数组的小标加一
}
else
continue;}
int getPrime(int n){//返回下标为n的素数,其他的hasnextprime 和nextprime去掉吧
if(n>=a.length){
return -1;
}
else
return a[n];
}
if(n>=a.length||a<=0){
return -1;
}
else
return a[n];
}
靠..你猛~!
你随便定一个长度试试看