最大公约数这里我运用了辗转相除法来实现,辗转相除法的意思是给出所要求的两个数之后,用大数取余小数,如果为0,那么那个小数就是最大公约数;如果不为1,我再用较大的数取余上个余数,依次循环,最后得到结果。(给大家举个例子吧,12和16,首先用16取余12,结果为4,不为0,再用12取余4,发现为0,因此4是16和12的最大公约数)。
最小公倍数我则是简化了一下,利用求出的最大公约数来求,只要用原来的两个数相乘再除以最大公约数就是最小公倍数。
# include <stdio.h>
int huan(int* x,int* y);
int main ()
{
int a,b;scanf("%d%d",&a,&b);
huan(&a,&b); //因为要用大数取余小数,这里调用了一个函数来将a变成较大数
int c=b,x=a,y=b;
while(c>0) //判断最大公约数的循环
{
c=b;
c=a%b;
a=b;
b=c;
}
printf("%d",a);
printf("\n%d",x*y/a); //求最小公倍数
return 0;
}
int huan(int* x,int* y) //调用的函数
{
if(*x<*y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
}