使用do-while循环查找2-20的素数和最大因子

时间:2017-10-13 02:37:05

标签: java

我完全成功了,但是有一个小问题:即使我有最大的因素,它仍然打印9和15作为素数。我该如何更改代码?

  int num=2,temp=0;
  do{
      for(int i=(num-1);i>=2;i--){
          if(num%i==0){
            System.out.println(num+" largest factor is "+i);
            break;
            }
        }
      boolean prime=false;
      for(int j = 2; j < num; j++){
            if(num % j == 0){
             break;
             }
            else{
                prime=true;
            }
         }
         if(prime == true){
            System.out.println(num+" is prime");
         }
      num++;
  }while(num<21);

1 个答案:

答案 0 :(得分:0)

主要标志在j = 2上设置为9然后在3上它会中断,所以你可以

boolean flag=true;
 for(int j = 2; j < num; j++){
        if(num % j == 0){
         flag=0;
         break;
         }
     }

 if(flag){
//print num is prime
 }
 else{
 //not prime
 }