首页 > 代码库 > 一个好的函数(gcd)求最小公约数

一个好的函数(gcd)求最小公约数

这个函数是我无意中看到的很不错,很给力,我喜欢

是用于求最小公约数的

简单的描述就是,记gcd(a,b)表示非负整数a,b的最大公因数,那么:gcd(a,b)=gcd(b,a%b)或者gcd(a,0)=gcd(0,a)=a

请看代码

int gcd(int a,int b)
{
if(a==0)
return b;
if(b==0)
return a;
return gcd(b,a%b);
}

例题 链接

http://acm.hdu.edu.cn/showproblem.php?pid=1108

由于题目很简单,我就不多说了

AC 代码

#include<stdio.h>
int main(void)
{
int gcd(int a,int b);
int a,b;
while(scanf("%d%d",&a,&b)==2)
{
printf("%d\n",a*b/gcd(a,b));//两数最大公因数和最小公倍数的乘积为两数的乘积。
}
return 0;
}

int gcd(int a,int b)
{
if(a==0)
return b;
if(b==0)
return a;
return gcd(b,a%b);
}

 

一个好的函数(gcd)求最小公约数