求两个数的最大公约数
(1)短除法
#include <stdio.h>
#include <stdlib.h>
//短除法
int main()
{
int a, b, c, i, min;
scanf("%d %d", &a, &b);
c = 1; //变量c是为累乘因数而设置的
if(a > b)
min = b;
else
min = a;
for(i = 2; i <= min; i++) //"枚举"可能的公约数
{
while(a % i == 0 && b % i == 0) //"试"i是否为公约数
{
c = c * i;
a = a / i;
b = b / i;
}
}
printf("%d is maximal common divisor", c);
}
(2)辗转相除法
#include <stdio.h>
#include <stdlib.h>
//辗转相除法
int min(int x, int y)
{
int z;
if(x > y) //比较x,y的大小
{
z = x;
x = y;
y = z;
}
while(z != 0)//辗转相除
{
z = y % x;
y = x;
x = z;
}
return y;
}
int main()
{
int a, b, c;
scanf("%d %d", &a, &b);
c = min(a,b);
printf("%d", c);
}