当前位置: 代码迷 >> J2ME >> 求最大公约数,该如何解决
  详细解决方案

求最大公约数,该如何解决

热度:2564   发布时间:2013-02-25 21:38:29.0
求最大公约数
//最大公约数(假设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;
  相关解决方案