什么是欧几里得算法:欧几里得算法就是辗转相除法,用来求得最大公约数。
1.1模板一:
int gcd(int a,int b)
{
//return b==0?a:gcd(b,a%b);
return b?gcd(b,a%b):a;
}
1.2完整代码:
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<endl;
return 0;
}
2.1 模板二:
int gcd(int a,int b)
{
while(b!=0)
{
int r=b;
b=a%b;
a=r;
}
return a;
}
2.2 代码二:
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int gcd(int a,int b)
{
while(b!=0)
{
int r=b;
b=a%b;
a=r;
}
return a;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<endl;
return 0;
}
3.1模板三:(递归)
int gcd(int a,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
3.2代码:
#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
int gcd(int a,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<endl;
return 0;
}