求最大公约数和最小公倍数(利用递归实现)

来源:互联网 发布:列表是什么网络意思 编辑:程序博客网 时间:2024/05/18 20:35

今天看了学长一段代码真是惊为天人啊。原来他们最大公约数gcd都是这样求的:

#include<stdio.h>#include<string.h>#include<math.h>int gcd(int x,int y){    return y? gcd(y,x%y):x; } /*这里可以看出如果是xy小时,xy取余还是xx则变为y,只比较一次就相当于交换了位置可以看出,因为这里用的还是辗转相除法。所以当y0时可以得到最大公约数,即是此时的x*/int main(void){    int a,b;    scanf("%d %d",&a,&b);    int c = gcd(a,b);    printf("最小公倍数为:%d,最大公约数为:%d",a/c*b,c);     return 0;}

注释是我自己加上去的。。。感觉理解不透啊。还是要精简自己的代码啊。这是我以前求最大公约数的代码

#include<stdio.h>#include<string.h>#include<math.h>int gcd(int n,int m){    int t,i,j;    if(n < m)    {        t = n;        n = m;        m = t;    }    while(n % m)    {        t = n % m;        n = m;        m = t;     }    return m;}int main(void){    int a,b;    scanf("%d %d",&a,&b);    printf("最大公约数为:%d",gcd(a,b));     return 0;}

真是惭愧啊。

0 0
原创粉丝点击