{
public static void main(String[] args)
{
int i,j,number;
for(i=201; ;i++)
{
for(j=2;j<i;j++)
if((i%j)==0) break;
if(j==i)
{number=i;
break;
}
}
System.out.println(number);
}
}
请大家看看,程序是对的,就是的不到正确的答案
是求大于200的最小的质数
这个肯定不对,因为209可以被11整除,得19~
并非是这样的~~j一定会等于i,因为当for循环循环到j==(i-1)后,循环并没有结束,依然会执行后面的j++,即使得j此时已经等于了i,然后再去判断j是否小于i,发现不再小于,退出循环,而此时j已经等于i了,因此if(j==i)这一句肯定会执行。楼主的这段程序我验证过了,可以运行,结果是211(只是效率比较低,可以精简)
[此贴子已经被作者于2006-11-19 16:04:24编辑过]
并非是这样的~~j一定会等于i,因为当for循环循环到j==(i-1)后,循环并没有结束,依然会执行后面的j++,即使得j此时已经等于了i,然后再去判断j是否小于i,发现不再小于,退出循环,而此时j已经等于i了,因此if(j==i)这一句肯定会执行。楼主的这段程序我验证过了,可以运行,结果是211
不是的 因为j++ 是在 那次循环运行后才加1
不会运行到if(j==i)
再说lz 的 if((i%j)==0) break; //如果j==i 肯定跳出了
if(j==i) //下面这句就不会运行了
[此贴子已经被作者于2006-11-19 16:14:26编辑过]
该程序的问题出在把变量int j = 2设在了循环之外,呵呵,导致每次循环并没有把J初始为2的状态,而是按照上次循环后的j的值继续执行的
class Aaa{
public static void main(String[] args){
boolean isperist = false;
int num = 199;
int temp=0;
do{
num+=2;
int j = 2;
while(j<num/2){
if(num%j==0){
isperist = false;
break;
}else{
j++;
isperist = true;
}
}
if(isperist){
temp = num;
break;
}
}while(isperist==false);
System.out.println(temp);
}
}
这样就OK了~