import java.io.*;
public class Flay
  {
//判断一个数,是否为素数(只能被1和它本身整除的数叫素数)
public static void main(String args[])throws IOException
{
int a,i;
bealoon p;
BufferedReader buf;
String str;
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.print("INPUT A INTEGER:")
str=buf.readLine();
a=Integer.parseInt(str);
p=true;
for(i=2;i<a;i++)
  if(a%i==0)
    p=false;
if(p=true)
   System.out.print("a is a Prime");
      else
   System.out.print("a is not a Prime");    
}}我想问的是如果我在FOR循环后面加一个break;语句,
for(i=2;i<a;i++)
 {if(a%i==0)
   p=false;
   break;
}
这两句有什么区别呢,哪个程序才是正确的计算素数的程序呢?

解决方案 »

  1.   

    初学JAVA,望前辈门指点一下小弟,小第先谢过了哈
      

  2.   

    效果一样,不过用break更快,找到即停止,即不是素数,而且可以改进如下:
    for(int i=2; i<(int)Math.sqrt(a); i++){
        if(a%i == 0) {
            p = false;
            break;
    }
      

  3.   

    上面应该是i<=(int)Math.sqrt(a)
      

  4.   

    believefym(feng) 只计算到A的平方根,是不错的办法,省了很多时间
    谢谢指点哈 3Q
      

  5.   

    break,就是直接跳出离它最近的那层循环!
      

  6.   

    加 break 可以说是适可既地退出不需要做多余的工作。 。