日期:2014-05-20  浏览次数:20798 次

求最大公约数
//最大公约数(假设M>N)
  if(M%N==0){
  System.out.println("最大公约数是"+N);
   
  }
  else{
  for(int i=1;i<N;i++){
  for(int j=i+1;j<N;j++){
  //i是公约数,并且没有比他再大的公约数
  if((M%i==0&&N%i==0)&&(M%j!=0&&N%j!=0)){
  System.out.println(i);
  }
  }
  } 
  }
  }


麻烦高手看看哪里有问题???????????在线等…………

------解决方案--------------------
LS已经说了,两个数能整除i,不能整除i+1以后的情况有很多,所以这种写法是不对的
可以从大到小循环或者采用辗转相除法
Java code
if(M%N==0){
    System.out.println("最大公约数是"+N);
} else{
    for(int i=N-1;i>0;i--){ //从大数向小数循环
       if(M%i==0&&N%i==0){
          System.out.println(i);
       }
    }
}

------解决方案--------------------
楼上正解。
补充:System.out.println(i);break;