每个题目都有超链接,点击可以跳转到题目界面!!!

最大公约数和最小公倍数

1.c++自带__gcd(int m,int n)函数,可以用来求最大公约数;
2.最小公倍数=m*n/最大公约数;

寒假培训——GCD(最大公约数),LCM(最小公倍数)
另外两种求最大公约数的方法
M1.辗转相除法(欧几里得算法)

寒假培训——GCD(最大公约数),LCM(最小公倍数)
M2.辗转相减法(更相减损术)
寒假培训——GCD(最大公约数),LCM(最小公倍数)

又见GCD

纯暴力枚举就能做
寒假培训——GCD(最大公约数),LCM(最小公倍数)

多个数的最大公约数

寒假培训——GCD(最大公约数),LCM(最小公倍数)

多个数的最小公倍数

先求两个数的最大公约数,再根据这两个数的最大公约数求出这两个数的最小公倍数,再用求得的最小公倍数与另一个新数求最大公约数,再根据最大公约数求最小公倍数,以此类推……
寒假培训——GCD(最大公约数),LCM(最小公倍数)

LCM&GCD

假设gcd(a,b)=x,lcm(a,b)=y,则可得:gcdlcm=ab,即xy=ab,同除以x2,得y/x=(a/x)(b/x),令y1=y/x,a1=a/x,b1=b/x,则y1=a1b1,且a1∈[1,y1]。这样化简之后,再遍历[1,sqrt(y1)](只需遍历到 根号y1 即可)找满足gcd(a1,b1)==1的情况,更新答案。
注意特判a1*a1=y的情况,答案+1;其他情况答案+2。

注:
1.gcd(a,b)=x,lcm(a,b)=y可以推出ab=xy;但是反过来则不能推出;
2.最小公倍数一定是最大公约数的倍数;
3.gcd(a,b)成立的个数与gcd(a/x,b/x)的个数相等;
4.gcd(a,b)=x则gcd(ma,mb)=m*x;gcd(a/m,b/m)=x/m;

寒假培训——GCD(最大公约数),LCM(最小公倍数)

人见人爱gcd

寒假培训——GCD(最大公约数),LCM(最小公倍数)
寒假培训——GCD(最大公约数),LCM(最小公倍数)

高木同学的因子

先求两个数的最大公约数,再求最大公约数的所有因子,即为两个数的所有因子。
寒假培训——GCD(最大公约数),LCM(最小公倍数)

相关文章: