做法一:
用两个数a,b中的较大数a模较小数b,若等于0,则较小数b为两数的最大公约数
若不等于0,则较小数b依次减一,重复以上步骤.
int min(int x, int y)
{
return x > y ? y : x;
}
int main()
{
int a = 0;
int b = 0;
int m = 0;
int n = 0;
printf("请输入两个数:\n");
scanf("%d,%d", &a, &b);
for (m = min(a, b); m > 0; m--)//m为ab两数中最小的一个
{
if ((a%m == 0) && (b%m == 0))//a,b模m都为0时,m为最大公约数,否则m--,继续取模
{
break;
}
}
printf("最大公约数为%d\n", m);
return 0;
}
做法二:
<span style="color:#4f4f4f">辗转相除法:</span>
int main()
{
int a = 0;
int b = 0;
int c = 0;
printf("请输入两个数:");
scanf("%d%d", &a, &b);
while(c = a%b)
{
a = b;
b = c;
}
printf("最大公约数为:%d\n", b);
return 0;
}
输出结果: