我编写了这段代码,用于搜索素数并将它们放入数组中。这是:
int[] prime_array = new int[(int)s.upper_bound];
int index_in_array = 0;
boolean are_we_done = false;
int index = 1;
boolean is_prime = true;
while (!are_we_done) {
try {
for (int i = 1; i < index; i++) {
if ((index%i)==0) {
is_prime = false;
}
}
if (is_prime) {
prime_array[index_in_array] = index;
index_in_array++;
}
index++;
is_prime = true;
}
catch (IndexOutOfBoundsException e) {
are_we_done = true;
break;
}
}
不幸的是,它唯一能吸引的是1.不知道它为什么不起作用?
答案 0 :(得分:5)
您的for
循环正在寻找以i=1
开头的因素,如果index%i==0
您认为它不是素数。但n%1==0
适用于所有整数n
。
表示某些东西不是素数的最低因子是2
。
编辑:
以下是其他一些建议: