最大公约数和最小公倍数的欧几里得算法

 

最大公约数的算法竟然如此简单,不说了,见代码

 

#include <stdio.h>

 

int gcd(int a, int b)

{

if(b== 0)

    return a;

return gcd(b, a%b);

}

简化后如下:

 

int gcd(int a, int b)

{

  return (b==0 ? a: gcd(b, a%b));

}

 

而最小公倍数的也就为:

 

int lcm(int a, int b)

{

 return (gcd(a, b) == 0 ? 0: a*b/ gcd(a, b));

}

int main()

{

  printf("Please input for 2 numbers for gcd.\n");

  int a, b;

  scanf("%d", &a);

  scanf("%d", &b);

  printf("gcd = %d\n", gcd(a, b));

  printf("lcm = %d\n", lcm(a, b));

  return 0;

}

 

posted @ 2018-04-10 10:09  terrytian  阅读(364)  评论(0编辑  收藏  举报