求两个数的最大公约数:
方法1:穷举
int gcd (int a,int b)
{
int ans;
for (int i = 1;i<=min(a,b);i++)
{
if (a%i==0 && b%i==0)
{
ans = i;
}
}
return ans;
}
这种方法容易时间超限,小数据可以使用,大数据不建议。
方法2:辗转相除法
int gcd (int a,int b)
{
int r;
while (b)
{
r = a%b;
a = b;
b = r;
}
return a;
}
这种方法适合大数据,不会时间超限。
方法3:直接调用自带函数__gcd(注意是两个下划线)
#include <bits/stdc++.h>//万能库
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<__gcd(a,b);
return 0;
}