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]);
        }
    }
}
    

重复输出

吐槽:

感情淡了,正道的光……

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1