zoukankan      html  css  js  c++  java
  • 九度OJ 1056:最大公约数 (GCD)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:6278

    解决:4075

    题目描述:

    输入两个正整数,求其最大公约数。

    输入:

    测试数据有多组,每组输入两个正整数。

    输出:

    对于每组输入,请输出其最大公约数。

    样例输入:
    49 14
    样例输出:
    7
    来源:
    2011年哈尔滨工业大学计算机研究生机试真题

    思路:

    在编程之美上见过,无非是两种方法,辗转相除法和相减法。

    前一种比较常用,后一种更适合于两个大数比较相近的情况,比如说两个数分别是100000001和100000000。


    代码:

    #include <stdio.h>
    #include <string.h>
     
    int main(void)
    {
        int a, b;
     
        while (scanf("%d%d",&a, &b) != EOF)
        {
            while(a!=0 && b!=0)
            {
                if (a == b)
                {
                    printf("%d
    ", a);
                    break;
                }
                else if(a > b)
                    a = a-b;
                else
                    b = b-a;
            }
     
            if (a == 0)
                printf("%d
    ", b);
            if (b == 0)
                printf("%d
    ", a);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1056
        User: liangrx06
        Language: C
        Result: Accepted
        Time:0 ms
        Memory:912 kb
    ****************************************************************/



    编程算法爱好者。
  • 相关阅读:
    复利计算器2.01
    复利计算器2.0
    0429团队3.0
    0428 团队项目合作2.0作业
    "数学口袋精灵"bug
    操作系统-实验2
    博客评论
    复利计算升级
    0408 结对合作
    0406复利计算5.0
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083975.html
Copyright © 2011-2022 走看看