import java.util.*;
public class isPrimeNumber {
public static void main(String[]args)
{
Scanner f=new Scanner(System.in);
while(true)
{
int a=f.nextInt();
for(int i=2;i<=Math.sqrt(a);i++)
{
if(a%i==0)
System.out.println("不是一个素数");
}
System.out.println("是一个素数");
}         
}
}我的意思,大家看了代码,估计也知道了,我输入11的时候,结果和我意料的一样,可我输入9的时候,由于if代码块也执行了,导致输出2个结果,怎样才能改成我意料的结果呢

解决方案 »

  1.   

    不是素数了就直接break掉就好了
      

  2.   


    if(a%i==0)   
    {                             
    System.out.println("不是一个素数");  
    break;
    }
      

  3.   


    import java.util.*;
    public class isPrimeNumber {    
        public static void main(String[]args)
        {
            Scanner f=new Scanner(System.in);
            while(true)
            {
                int a=f.nextInt();
                boolean sushu=true;
                for(int i=2;i<=Math.sqrt(a);i++)
                {
                    
                    if(a%i==0)         {                       
                        System.out.println("不是一个素数");
                        sushu=false;
                    }                
                }            
                if (sushu){
                    System.out.println("是一个素数");
                }            
            }                            
        }
    }
      

  4.   


    if(a%i==0) {                               
                        System.out.println("不是一个素数");    
                        break;
    }
                
      

  5.   

    我晕,你的FOR外面的代码不管怎么也会执行啊!
    只是FOR里面的符合才会执行...            boolean b = true;
                for(int i=2;i<=Math.sqrt(a);i++)
                {
                    if(a%i==0){
                     System.out.println("不是一个素数");  
                     b = false;
                     break;
                     }                                
                
                }   
                if(b){
                  System.out.println("是一个素数");  
                 }   帮你改了下
      

  6.   

    直接break掉不行啊,我开始想的也是break,可是不行啊,
      

  7.   

    楼主干嘛要做成死循环?,
    public class isPrimeNumber {
    public static void main(String[] args) {
    boolean isPrime = true;//定义一个标识isPrime,可以根据标识判断是不是素数
    Scanner f = new Scanner(System.in);
    int a = f.nextInt();


    for (int i = 2; i <= Math.sqrt(a); i++) {
    if (a % i == 0)
    isPrime = false;
    break;
    }
    if (isPrime) {
    System.out.println(a + " isPrime");
    } else {
    System.out.println(a + " is Not Prime");
    }


    }}
      

  8.   

    声明一个boolean类型的变量,不是素数了就将其设为true,并break,然后根据boolean型变量决定是否打印后面的结果。
    或者把逻辑写在一个单独的函数中,不是素数了就return