王道机试指南NO.8最大公约数

版权声明:本博全为博主学习日常,均为原创,请勿转载 https://blog.csdn.net/weixin_44332298/article/details/87900603

时间限制:1s 内存限制32MB

题目描述

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

输入

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

输出

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

样例输入

49 14

样例输出

7

题目分析

若a,b全为零,则它们的最大公约数不存在;若a,b其中之一为零,则它们的最大公约数为a,b中非零的那个;若a,b都不为零,则使新a=b,新b=a%b;重复该过程。

欧几里得算法递归形式

//最大公约数,欧几里得算法 递归形式
#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(cin >> a >> b){
        cout << gcd(a, b) << endl;
    }
    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(cin >> a >> b){
        cout << gcd(a, b) << endl;
    }
    return 0;
}

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44332298/article/details/87900603