最大公约数有几种求法
第一种:暴力
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int MAX=max(a,b);
for(int i=MAX;i>=0;--i)
{
if(a%i==0&&b%i==0)
{
printf("%d",i);
break;
}
}
return 0;
}
第二种:辗转相除法
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
if(a<b)swap(a,b);
while(b != 0)
{
c = b;
b = a%b;
a = c;
}
printf("%d",a);
return 0;
}
第二种:递归版本
#include<bits/stdc++.h>
using namespace std;
int gcd(int m, int n) {
return n ? gcd(n, m % n) : m;
}
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
printf("%d",gcd(a,b));
return 0;
}