1.穷举法
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,a,b,n;
scanf("%d%d",&a,&b);
n = a<b?a:b;
for(i = n;i>=1;i--)
int i,a,b,n;
scanf("%d%d",&a,&b);
n = a<b?a:b;
for(i = n;i>=1;i--)
{
if((a%i == 0)&&(b%i == 0))
{
printf("%d",i);
break;
}
}
return 0;
if((a%i == 0)&&(b%i == 0))
{
printf("%d",i);
break;
}
}
return 0;
}
2.欧几里得算法(辗转相除)
int main(int argc, char *argv[]) {
int i,a,b,t,r;
scanf("%d%d",&a,&b);
int i;
if(b == 0)
i = a;
if(a < b)
{
t = a;
a = b;
b = t;
}
while(a%b)
{
r = a%b;
a = b;
b = r;
r = a%b;
}
printf("%d",b);
return 0;
}
3.递归
#include <stdio.h>
int main(int argc, char *argv[]) {
int i,a,b,t,r;
scanf("%d%d",&a,&b);
printf("%d",gcd(b,a%b));
return 0;
}
int gcd(int a, int b)
{
int i;
if(b == 0)
i = a;
else
i = gcd(b,a%b);
return i;
}
int i,a,b,t,r;
scanf("%d%d",&a,&b);
printf("%d",gcd(b,a%b));
return 0;
}
int gcd(int a, int b)
{
int i;
if(b == 0)
i = a;
else
i = gcd(b,a%b);
return i;
}