{
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的最小的质数
----------------解决方案--------------------------------------------------------
程序是对的..却又得不到正确的答案?...那是什么...
----------------解决方案--------------------------------------------------------
......
我运行了一下这个程序,完全可以得到结果,最后的输出是211啊~楼主系编译器有问题吧~~要不就是文件名和类名不一致?
----------------解决方案--------------------------------------------------------
for(j=2;j<i;j++)
if((i%j)==0) break;
if(j==i)
{ number=i;
break;
}
if(j==i)? 可能运行吗
上面for不是 ( .. ;j<i;..)了吗?
----------------解决方案--------------------------------------------------------
改成if(j==(i-1))
{
number=i;
break;
}
应该可以!
----------------解决方案--------------------------------------------------------
[CODE] public static void main(String[] args){
boolean isperist = false;
int num = 199;
int temp=0;
int j = 2;
do{
num+=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);
}[/CODE]
我算到是209..不知道对不..
----------------解决方案--------------------------------------------------------
[CODE] public static void main(String[] args){
boolean isperist = false;
int num = 199;
int temp=0;
int j = 2;
do{
num+=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);
}[/CODE]
我算到是209..不知道对不..
这个肯定不对,因为209可以被11整除,得19~
----------------解决方案--------------------------------------------------------
for(j=2;j<i;j++)
if((i%j)==0) break;
if(j==i)
{ number=i;
break;
}
if(j==i)? 可能运行吗
上面for不是 ( .. ;j<i;..)了吗?
并非是这样的~~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编辑过]
----------------解决方案--------------------------------------------------------
[CODE] public static void main(String[] args){
boolean isperist = false;
int num = 199;
int temp=0;
int j = 2;
do{
num+=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);
}[/CODE]
我算到是209..不知道对不..
该程序的问题出在把变量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了~
----------------解决方案--------------------------------------------------------