九度 题目1056:最大公约数

来源:互联网 发布:机顶盒点播软件 编辑:程序博客网 时间:2024/06/06 15:51

九度 题目1056:最大公约数

原题OJ链接:http://ac.jobdu.com/problem.php?pid=1056

题目描述:

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

输入:

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

输出:

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

样例输入:

49 14

样例输出:

7

解题思路:

最大公约数,GCD。欧几里得算法:
若a、b全为零则它们的最大公约数不存在;
若a、b其中之一为零,则它们的最大公约数为a、b中非零的那个;
若a、b都不为零,则使新a=b,新b=a%b然后重复该过程。

源代码:

#include<iostream>#include<cstring>using namespace std;/*//非递归形式 int gcd(int a,int b){    while(b!=0){        int t=a%b;        a=b;        b=t;    }    return a;}*///递归形式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;}
原创粉丝点击