最大公约数和最小公倍数

最大公约数

约数:

约数,又称因数。整数a除以整数b(b≠0)除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a(\(b|a\))。a称为b的倍数,b称为a的约数。

比如 :4 的正约数有:1、2、4。
4除以2没有余数<-->4能被2整除<-->2能整除4-->4为2的倍数,2为4的约数(因数)


最大公约数

如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。约数和倍数都表示一个整数与另一个整数的关系,不能单独存在。如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数。

几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。
例如:12、16的公约数有1、2、4,其中最大的一个是4,4是12与16的最大公约数,一般记为(12,16)=4。12、15、18的最大公约数是3,记为(12,15,18)=3。

欧几里得算法(辗转相除法)求最大公约数

定理:两个整数的最大公约数等于 其中较小的那个数 和 两数相除余数 的最大公约数。最大公约数(Greatest Common Divisor)缩写为GCD。

gcd(a,b) = gcd(b,a mod b)

int gcd(int a,int b)
{
    return b ? gcd(b,a%b) : a ; // 如果b为0就返回a(任何数除以0都得0,a和0的最大公约数是a本身),否则返回gcd(b,a%b)这个时候就已经保证了第一个参数大于等于第二个参数
}

最小公倍数

两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。

与最小公倍数相对应的概念是最大公约数,a,b的最大公约数记为(a,b)。关于最小公倍数与最大公约数,我们有这样的定理:(a,b)x[a,b]=a*b(a,b均为整数)。


lcm(a,b)=a*b/gcd(a,b)求a和b的最小公倍数

int gcd(int a,int b)
{
    return b?gcd(b,a%b):a ;
}

int lcm(int a,int b)
{
    return a*b/gcd(a,b) ;
}


题目链接:
最大公约数
最小公倍数

posted @ 2022-08-10 15:59  r涤生  阅读(316)  评论(0)    收藏  举报