最大公约数(gcd)
最大公约数:指两个或多个整数 共有约数(除数)中最大的一个。且这两个整数不能为0。
如 6和9 的最大公因数为 3。
实现方法:
一,辗转相除法:
两数不能同时为0
int gcd(int a,int b)
{
if(a % b==0)
return b;
else
{
return gcd(b,a%b);
}
}
二,if,while位运算
两数可以同时为0
int gcd(int a,int b)
{
if(b)
while((a=a%b) && (b=b%a));
return a+b;
}
三,__gcd库函数(需要<algorithm>头文件)
两数可以同时为0,但速度较慢
#include <iostream>
#include algorithm
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<__gcd(a,b);
}
当两数的最大公约数为 1时,两数互质
最小公倍数(lcm)
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数
如 6和9的最小公倍数为 18;
最小公倍数= a*b/最大公约数
int lcm(int a,int b)
{
//return a*b/__gcd(a,b);
return a*b/gcd(a,b);
}