最大公约数
利用欧几里得算法
设a,b均为正整数,则
g
c
d
(
a
,
b
)
=
g
c
d
(
b
,
a
%
b
)
gcd(a,b)=gcd(b,a\%b)
gcd(a,b)=gcd(b,a%b)
#include<stdio.h>
int gcd(int a,int b)
{
if(b==0)return a;
else return gcd(b,a%b);
}
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
printf("%d\n",gcd(m,n));
}
return 0;
}
最小公倍数
公式如下
设a,b均为正整数,则
l
c
m
(
a
,
b
)
=
a
g
c
d
(
a
,
b
)
×
b
lcm(a,b) =\frac{a}{gcd(a,b)}\times b
lcm(a,b)=gcd(a,b)a×b
#include<stdio.h>
int gcd(int a,int b)
{
if(b==0)return a;
else
{
return gcd(b,a%b);
}
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
//求出最大公约数
int max=gcd(a,b);
//求出最小公倍数
int min=(a/gcd(a,b))*b;
printf("%d\n",min);
}
return 0;
}