亚历山大时期的欧几里得所著的《几何原本》中这样定义了最大公约数的算法,两个不全为0的非负整数m,n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m,n的最大正整数。欧几里得算法的方法就是重复应用下列等式,一直到m mod n等于0。
gcd(m.n)=gcd(n,m mod n) (m mod n表示m除以n之后的余数),下面是我关于这个式子写的一个算法描述。
首先,如果n=0,返回m的值作为结果,同时过程结束,否则进入第二步
第二步,m除以n,将余数赋给r
第三步,将n的值赋给m,将r的值赋给n,返回第一步
下面是具体的算法
package gcd;
public class gcd1 {
public static int gcd(int m,int n)
{
if(n==0)
{
return m;
}
else
{
do
{
int r=m%n;
m=n;
n=r;
}while(n!=0);//表达式
return m;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(gcd(99,66));
}
}