蓝桥杯
* 最大公约数
两个整数的最大公约数等于其中较小的那个数和两数的差的最大公约数。通过不断地用较小的数替换较大的数,并用两数的差替换较小的数,最终会得到最大公约数。
例如,计算 gcd(48, 18) 的过程如下:
gcd(48, 18)
gcd(18, 48 % 18) = gcd(18, 12)
gcd(12, 18 % 12) = gcd(12, 6)
gcd(6, 12 % 6) = gcd(6, 0)
当 b 为零时,算法停止,返回 a(在这里是6),这是 48 和 18 的最大公约数。
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
对于一些比较难以理解或者自己尝试书写有困难的算法,我们可以理解它的一些简单的例子并且尝试记下来,对于我们直接使用提高做题效率有很大的帮助。
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int ret=0;
for(int i=1;i<=3030;i++)
{
if(gcd(i,2020)==i&&gcd(i,3030)==i)
{
ret++;
}
}
cout<<ret;
return 0;
}
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int n=0;
cin>>n;
int a=0,b=0;
while(n--)
{
cin>>a>>b;
cout<<gcd(a,b)<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
int