基础知识:最大公约数:自行百度;
欧几里得-最大公约数算法:
gcd(m,n) = gcd(n,m mod n) (m mod n 表示:m除以n后的余数) 重复此步骤,知道 m mod n等于0;
得到gcd(m,0) 而gcd(m,0) = m (这步为什么?呃我好像也有点不太明白!如果有知道的欢迎告知)
举例说明:gcd(60,24) = gcd(24,12) = gcd(12,0) = 12;因此结果为12.不信的话可以请自己验证一下;
代码如下:
//
//欧几里得算法求最大公约数
//created by AaronLee_1310 on 2019 04 28
//
public class main {
public static void main(String[] args)
{
//随意初始化数值
int m = 248;
int n = 16802768;
int result = gcd(m,n);
System.out.println(result);
}
//欧几里得求最大公约数算法.
public static int gcd(int m,int n)
{
//判断m是否大于n
if(m < n)
{
int temp = m;
m = n;
n = temp;
}
while(n != 0)
{
int r = m % n;
m = n;
n = r;
}
return m;
}
}
其中做了一步优化判断,判断m是否大于n,否的话互换。主要的函数就是while部分。