今天水洛谷P1888,在题解里发现了这个函数
属于#include<algorithm>
__gcd,它的前面是两条英文下划线,作用是求最大公约数
贴上原题题解
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll a,b,c;
cin>>a>>b>>c;
if(a<b) swap(a,b);
if(a<c) swap(a,c);
if(b<c) swap(b,c);
ll d=__gcd(a,c);
cout<<c/d<<'/'<<a/d<<endl;
return 0;
}
当然,我们也可以用辗转相除法或更相减损法手写。下面提供一个辗转相除法求最小公约数的函数:
int gcd(int a,int b)
{
return a%b ? gcd(b,a%b) : b;
}
/*
递归原理:
若a可以整除b,则最大公约数是b,否则最大公约数便是b与a%b的最大公约数
*/
要保证a>b