辗转相除法求最大公约数与最小公倍数

非常简单的一个小代码,想起初学时看半天没懂,今天遇到了就总结了一下,看代码:

#include<stdio.h>
int main()
{
    int a,b,c,d,t,max,min;
    scanf("%d%d",&a,&b);
    if(b>a)             //如果b>a,交换双方的值,使大者a为被除数
    { t=a;a=b;b=t;}
	d=a*b;              //待会计算最小公倍数
    while((c=a%b)!=0)   //余数不为零,继续执行循环
    { a=b;              //使除数b变为被除数a
      b=c;              //使余数c变为除数b
      }
      max=b;            //最大公约数
      min=d/max;        //计算最小公倍数
      printf("最大公约数:%d
最小公倍数:%d
",max,min);
      return 0;
      } 

附上模板:最小公倍数为a*b/gcd(a,b%a);

int GCD(int a,int b)             
{
	return b==0?a:GCD(b,a%b);
}
原文地址:https://www.cnblogs.com/aerer/p/9931129.html