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