[b]public static boolean isPrime(int num)
{
int i;
int temp=0;
for(i=2;i<num;i++)

while((num%i)==0)
{
temp++;
}
}
if (num != 1 && temp<2) // 如果只有一次整除,那么该数为素数
{
System.out.print(true);
}
        if(temp>=2)
        {
         System.out.print(false);
        }
return false;
}
为什么不是素数不会输出false;但是是素数会输出true;

解决方案 »

  1.   

    你在if里面加了return false,当数据是错误的时候,会跳出循环,不会再经过输出false的if语句。
      

  2.   

    首先这里错了
    for(i=2;i<num;i++)

    while((num%i)==0)
    {
    temp++;
    }
    }
    不能嵌套while循环。当这个num等于6的时候for循环第二轮的时候,i等于3,那就进入while的死循环出不来了,因为6%3==0永远成立。
    把while换成if即可,否则你这个程序的bug太大太严重。至于为什么是素数就输出true不是就输出false你可以自己分析啊,带一个数字进去,看看经历了哪些不就懂了吗