用Java语言求m,n的最大公约数,三种方法

分别使用欧几里德算法、连续整数检测算法、公因数算法实现

第1个回答  2013-03-10
1.从1开始循环。分别求出m、n的约数。找出最大公约数。
2.判断m、n的大小,从较小的开始循环,每次减一,判断是否为公约数。如果是,则为最大公约数,break;
3.2反过来,从小到大循环,找最大的。
公约数判断:
m%i=0&&n/i=0。

举第二个例子:
public class Test {
public static int getN(int m,int n){
int i = m>n?n:m;
for(;i>0;i--){
if(m%i==0&&n%i==0){
System.out.println("m、n的最大公约数为"+i);
break;
}
}

return i;
}

public static void main(String[] args) {
System.out.println(getN(100, 88));
}

}
第2个回答  2013-03-10
import java.io.*;
public class Test {
public static void main(String []args) {
System.out.println("input m,n :");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int m = 0, n = 0;
try
{
m = Integer.parseInt(br.readLine());

n = Integer.parseInt(br.readLine()); }
catch (IOException e)
{
System.out.println("input error!");
}

while(m!=n)

{
if(m>n)
m=m-n;
if(m<n)
n=n-m;
}
System.out.println(m);
}
}追问

谢谢你啊,,但是我想要的是分别使用欧几里德算法、连续整数检测算法、公因数算法实现的代码。。。

追答

欧几里德算法
public static int divisor(int m,int n) {
if (m % n == 0) {
return n;
} else {
return divisor(n,m % n);
}
}

本回答被提问者和网友采纳
相似回答