首先,通过运行可以知道,你这个程序一个数字都没有打,为什么?
因为if(isPrime(i))永远是false,它后面的语句就没有被执行过!
在你的isPrime()方法里面,你想一下中间那个if,一般情况下,一个大于4的数字被开平方后,不会比它的一半还要大,所以中间那个if就不会变成true !
你的程序中,只要把
if(i>=n/2)
return true;
else
这三行注释掉,最后返回一个true就可以了
还有双循环的方法可以参考:
int i,j,count=0;
boolean t=true;
for(i=100;i<=200;i++)
{
t=true;
for(j=2;j<=(int)Math.sqrt(i);j++)
{
if(i%j==0)
{
t=false;
break;
}
}
if(t)
{
System.out.print(i+" ");
count++;
if(count%10==0)
System.out.println();
}
}
System.out.println("\n"+count); */ |