13 最大公约数

题目来源和说明

2011年哈尔滨工业大学计算机研究生机试真题

题目描述

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

样例

输入

49 14

输出

7

简要分析

要求a和b的最大公约数: (1)如果a和b全为0,则他们的最大公约数不存在 (2)如果a和b其中之一为0,则他们的最大公约数为a、b中非零的那个; (3)如果a和b都不为0,则使新a=b,新b=a%b,然后重复该过程。

C++ 代码

递归形式:

#include<iostream>

using namespace std;

int gcd(int a,int b) {
    if(b==0) return a;
    else return gcd(b,a%b);
}

int main() {
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF) {
        printf("%d\n",gcd(a,b)); //最大公约数
    }
    return 0;
}

非递归形式

#include<iostream>

using namespace std;

int gcd(int a,int b) {
    while(b!=0) {
        int t=a%b;
        a=b;
        b=t;
    }
    return a;
}

int main() {
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF) {
        printf("%d\n",gcd(a,b));
    }
    return 0;
}

高校夏令营机试训练 文章被收录于专栏

Leetcode题目太多,不知道如何准备高校夏令营?欢迎关注本专栏,和本小白一起准备夏令营吧! 本专题的规划如下: 截止到4月下旬:以王道考研为依托,提供夏令营机考的准备计划,打好基础 截止到5月中旬:以剑指offer进一步加强 本专题的内容如下: 1. 给出题目的在线测试链接,方面您检查代码的正确性 2. 给出题解

全部评论

相关推荐

牛客316659795号:不是,证明hr初筛已经过了,要投给部门筛一遍
点赞 评论 收藏
分享
03-27 17:35
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务