DESKTOP-QUF3J7K_20200829-柴宁宁
问题:
public class LuanShengSuShu {
public static void main(String[] args) {
int temp = 0;
int[] data = new int[250];
for (int i = 2; i < 1000; i++) {
boolean flag = true;
for (int j = 2; j <= i / 2; j++) {
int x = i % j;
if (x == 0) {
flag = false;
}
}
if (flag) {
// System.out.println(i);
data[temp] = i;
temp += 1;
}
}
for (int n = 0; n < temp - 1; n++) {
int x = data[n + 1] - data[n];
if (x == 2) {
System.out.println(data[n] + " , " + data[n + 1]);
}
}
}
}
求出素数后将素数放在一个数组里,根据数组下标判断孪生素数
出错:
1、将素数放在声明的数组里
先声明数组,再定义一个视为数组下标的变量temp ,往数组中增加一个素数 i ,temp加一
int[] array = new int[ 250 ];
int temp = 0;
array[ temp ] = i ;
temp++ ;
2、下标越界异常 n < data.length
for (int n = 0; n < data.length-1; n++) {
int x = data[n + 1] - data[n];
if (x == 2) {
System.out.println(data[n] + " , " + data[n + 1]);
}
}
3、判断孪生素数时的 for 循环所处位置
if (flag) {
data[temp] = i;
temp += 1;
for (int n = 0; n < temp - 1; n++) {
int x = data[n + 1] - data[n];
if (x == 2) {
System.out.println(data[n] + " , " + data[n + 1]);
}
}
}
重复输出
吐槽:
感情淡了,正道的光……
点赞