我们用(a1,a2,....)表示最大公因数 [a1,a2,.....]表示最小公倍数
1、两个数的最大公因数
辗转相除法,可以直接使用C语言自带的 c = __gcd(a,b);
辗转相除法原理可以自行百度。
2、多个数以上的最大公因数
1、多次辗转相除法
1.使用辗转相除法求a1和a2的最大公因数(a1,a2)
2.使用辗转相除法求(a1,a2)和 a3 的最大公因数(a1,a2,a3);
3.重复,得到(a1,...,an)
代码
int Gcd(int a[],int n){ //多次辗转相处法
int ans = a[0];
for(int i=1;i<n;i++){
ans = __gcd(ans,a[i]);
}
return ans;
}
2、变换法
1、找到a1,a2,..,an中的最小非零项aj,若有多个最小非零项则任取一个
2、 aj以外的所有其他非0项ak用ak mod aj代替;若没有除aj以外的其他非0项,则转到(4)
3、转到 1
4、 a1,a2,..