第一种 穷举法
#include<stdio.h>
int main()
{
int a,b,x,y,i;
scanf("%d%d",&a,&b);
for(i=a;i>=1;i--)//从a到1逐个判断(从大到小)
{
if(a%i==0&&b%i==0)//得出最大公因数就退出循环
break;
}
x=i;
for(i=a;i<=a*b;i++)//从a到a*b逐个判断(从小到大)
{
if(i%a==0&&i%b==0)//得到最小公倍数就退出循环
break;
}
y=i;
printf("最大公因数%d 最小公倍数:%d",x,y);
return 0;
}
第二种 辗转相除法
解释:
a=25; b=15; y=a%b=10;
a=b;(a=15) b=y;(b=10) y=a%b=5;
a=b;(a=10) b=y;(b=5) y=a%b=0
最大公因数:b
最小公倍数:a*b/b
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int r,t=a*b,x,y;
while((r=a%b)!=0)
{
a=b;
b=r;
}
x=b;
y=t/x;
printf("最大公因数:%d 最小公倍数:%d",x,y);
return 0;
}