最大公约数
首先给大家分享一些关于求余的公式
最基础的“%”求余符号。
-
( a+b ) % p = ( a%p + b%p ) % p
-
( a-b ) % p = ( a%p - b%p ) % p
-
( a*b ) % p = ( a%p * b%p ) % p
-
( a^b ) % p = ( (a%p)^b ) % p
-
( (a+b)%p + c ) % p = ( a + (b+c)%p ) % p
-
( (a*b)%p * c) % p = ( a * (b *c)%p ) % p
-
( a+b ) % p = ( b+a ) % p
-
( a* b ) % p =( b*a ) % p
-
( (a+b)%p * c )%p = ( (ac)%p + (bc)%p )%p
-
LCM(a,b)(最小公倍数)=a*b / GCD(a,b)(最大公约数)
这几个公式在遇到算法题求模时用处很大。
接下来看题目:
输入两个正整数m和n,求其最大公约数和最小公倍数。
这是一道编程入门题,求解最大公约数及最小公倍数,我们这里直接调用函数__gcd()来求解,图片已给出,大家也不要忘记引入头文件。
gcd()就是典型的利用求余的库函数。经过不断求余确定最大公约数,当余数为1时,结束,此时另外一个不为1的便是所求最大公约数。最小公倍数也可以直接由上边给出的公式a*b/__gcd(a,b)求出来!
以下给出GCD()函数代码
int gcd(int a,int b)
{
return !b?a:gcd(b,a%b);
}