题目链接:1011 最大公约数GCD
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
输入2个正整数A,B,求A与B的最大公约数。
Input
2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)
Output
输出A与B的最大公约数。
Input示例
30 105
Output示例
15
题记:
欧几里得算法是计算最大公约数的最常用算法,辗转相除,递归调用。
C语言程序如下:
//51Nod-1011 最大公约数GCD
#include <iostream>
using namespace std;
/* 欧几里得算法:递归法计算最大公约数 */
int gcd(int m, int n)
{
return (m == 0) ? n : gcd(n % m, m);
}
int main()
{
int a, b;
cin >> a >> b;
cout << gcd(a, b) << endl;
return 0;
}
算法部分等价于:
int gcd(int m, int n)
{
while(m>0)
{
int c = n % m;
n = m;
m = c;
}
return n;
}