首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

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

2012-02-29 
求最大公约数//最大公约数(假设MN)if(M%N0){System.out.println(最大公约数是+N)}else{for(int i1

求最大公约数
//最大公约数(假设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;

热点排行