题目:
1207:求最大公约数问题
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 26457 通过数: 16310
【题目描述】
给定两个正整数,求它们的最大公约数。
【输入】
输入一行,包含两个正整数(<1,000,000,000)。
【输出】
输出一个正整数,即这两个正整数的最大公约数。
【输入样例】
6 9
【输出样例】
3
分析一下:
1.枚举:由于数据范围太大,超时。
辗转相除法:有两数用大数除以小数,如果余数为零,则较小数为最大公约数
余数不为零时,再用余数与原较小数辗转相除,直到余数为零,输出较小数
不想手写的往下看:
#include<bits/stdc++.h>
using namespace std;
void gcd(int a,int b)
{
if(a%b==0||b%a==0)
{
cout<<min(a,b);
return;
}
else if(a>b)
{
gcd(a%b,b);
}
else if(b>a)
{
gcd(b%a,a);
}
}
int main()
{
int a,b;
cin>>a>>b;
gcd(a,b);
return 0;
}
这样写就AC了