你的程序之所以只显示2
3,是因为在sum从0加到2也就是number从2加到4的过程中,你的for一直是没有循环的。因为在这个过程中number/2一直小于num的值,也就是说你的type一直是true,所以if(type)一直为真,sysout能够运行,可以输出2
3.但是当number等于4之后,你的for开始循环,恰好4%2==0,所以type被修改为false。但是你在while中一直没有将type修改回true,所以从4以后你的if(type)一直为假,sysout再也没有输出后面的数字。-------------
建议修改为:
public static void main(String[] args) {
int OP=50;
int IT=10;
int number=2;
int sum=0;
boolean type=false;
while(sum<OP){
type=true;
for(int num=2;num<=number/2;num++){
if(number%num==0){
type=false;
break;
}
}
if(type){
sum++;
if(sum%IT!=0)
System.out.print(number+"
");
else
System.out.println(number);
}
number++;
}
但是之后问题又出现了,因为你将sum++放在if(type)中,所以每次当type==false时,sum都没有+1.但是number却仍然在+1,导致最后求出的不仅仅是0--50的素数(远远超出50),所以应该是每次while循环都要给sum+1,最终结果为:
public static void main(String[] args) {
int OP=50;
int IT=10;
int number=2;
int sum=0;
boolean type=true;
while(sum<OP){
type=true;
for(int num=2;num<=number/2;num++){
if(number%num==0){
type=false;
break;
}
}
if(type){
//sum++;
if(sum%IT!=0)//素数模10永远都不会为零,所以一直都不会换行。。。。。。
System.out.print(number+"
");
else
System.out.println(number);
}
sum++;
number++;
}