package chang.sushu;
public class SuShu {
public boolean Test(int n) {
boolean f = true;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
SuShu f = new SuShu();
int j = 0;
for (int i = 2; i <= 1000; i++) {
if (f.Test(i)) {
System.out.print(i + "\t");
j++;
// if (j % 5 == 0) { //当这个if语句在这个位置时,程序执行没有错误,正好5个结果一行,如图1;
// System.out.println();
//
// }
}
if (j%5==0) { //当if语句调整到这个位置时,程序运行就会出错。如图2;中间那些空行是哪来的?
System.out.println();
}
}
}
}


求问大家,if语句放在上面那个if语句的外面的时候,哪里来的那些空行?想了一下午了,没想出来,问了问老师,老师也不会~~
------解决思路----------------------
你注释掉的那个if语句是每次找到一个素数后才去判断j是否为5的倍数,如果是则输出换行!
而下面那个语句是只要判断j是否是5的倍数就输出换行符!打比方说,在j的值为5时,你找到了5个素数,这时在找到第六个素数之前,i的值是不断变换的,即外层for循环在不断执行,也就是你下面的if语句会一直输出换行,因为这时j的始终为5!直到你找到了第6个素数!
即在你寻找5n到5n+1个素数的过程中,下面的if语句始终在执行,所以不正确!