读书人

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

发布时间: 2012-02-29 16:44:10 作者: rapoo

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

读书人网 >J2ME开发

热点推荐