DESKTOP-TEACTL5_20200827-曾越

历史遗留问题:

在求孪生素数问题里,刚开始的思路是通过调用写好的judge方法来判断一个数是否是素数,将返回结果为true的数放在一个数组中,等1000内所有的数都判断完后,用for循环去遍历这个存放素数的数组,最后输出孪生素数。这是基本思路,但会出现一个问题就是在声明这个存放素数的数组时不知道它的长度,一开始的解决思路是将它定义成长度为1000的数组,因为它的长度不可能超过一千,完成所有的代码编写后也能跑出结果,但是这样写显得很是生硬而且还会报:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1000
at exercise.SuShu.main(SuShu.java:25)

今天修改后能够正常输出,注释掉的内容为改版前的内容,其他为修改后的内容:

package exercise;

public class SuShu {

public static boolean judge(int n) {
    for(int i=2;i<n-1;i++) {
        if(n%i==0) {
            return false;
        }
    }
    return true;
}

public static void main(String[] args) {

// SuShu s=new SuShu();
// int [] array=new int[1000];
// int j=0;
// for(int i=3;i<1000;i++) {
// if(s.judge(i)true) {

// array [j++]=i;
// }
// }
// int n=array.length;
// for(int a=0;a<n;a++) {
// if(array[a]-array[a+1]-2) {
// System.out.println(array[a]+","+array[a+1]);
// }
// }

    for(int i=3;i<1000;i++) {
        if(judge(i)&&judge(i+2)) {
            System.out.println(i+","+(i+2));//i+2不加括号会直接变成一个i2字符串
        }
    }
}

}

最后输出:

3,5
5,7
11,13
17,19
29,31
41,43
59,61
71,73
101,103
107,109
137,139
149,151
179,181
191,193
197,199
227,229
239,241
269,271
281,283
311,313
347,349
419,421
431,433
461,463
521,523
569,571
599,601
617,619
641,643
659,661
809,811
821,823
827,829
857,859
881,883

吐槽:是我把问题想得太复杂,道是我无敌的赶

​ --------来自绝拒说解的奇妙倒装