51Nod-1011-最大公约数GCD

输入2个正整数A,B,求A与B的最大公约数。
Input
2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)
Output
输出A与B的最大公约数。
Input示例
30 105
Output示例
15

对于这道题,要说的就是一个辗转相除法,也是欧几里得定理的应用,算法有些难于理解,需要数学很好才能理解,算法的实现上却是十分的简单,可以用递归来实现,当然,也可以用迭代来实现。代码如下(C):

#include <stdio.h>

long gcd(long a, long b)
{
    if (!b)
    {
        return a;
    }
    else
    {
        return gcd(b, a % b);
    }
    return 0;
}

int main(int argc, const char * argv[])
{
    long A, B;
    scanf("%ld %ld", &A, &B);
    printf("%ld\n", gcd(A, B));
    return 0;
}

上面的是递归实现的过程,用迭代实现也很容易,如下(C):

int gcd(int a, int b)
{
        int c = a % b;
        while(c)
        {
                a = b;
                b = c;
                c = a % b;
        }
        return b;
}

都是几行代码即可以实现的,其实不用强行理解,自己代入数据推算几遍即可,多实现几次,就可以记住了,挺好用的一个方法!

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 17:32
那如果是字节外包呢?据我所知工牌无区别&nbsp;可以晒出去装X的那种
秋盈丶:残酷的是,都一样,管你是不是字节,不过我是很反对这种的,本是同根生,市场行情决定了用工的模式会有很多外包,分层只是单纯为了筛选
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
点赞 评论 收藏
分享
翱翔龙骑:耗材的幻想
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务