c语言辗转相除法求最大公约数

不懂下面这个程序还有下面为什么公约数会变化 1.r=a%b; a=b; b=r; 最大公约数是a 2.a=b; b=r; r=a%b; 最大公约数是b

#include <stdio.h>
 
int main()
{
    int a,b,r;
    printf("请输入两个正整数:\n");
    scanf("%d %d",&a,&b);
    //如果a<b,交换a和b的值
    if(a<b)
    {
        r=a;
        a=b;
        b=r;
    }
 
    //辗转相除法,因为r的初始值不为0,所以while语句至少会执行一次
    //直至余数为零,跳出循环
    while(r!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
 
    //输出最大公约数
    printf("最大公约数为:%d\n",a);
 
    return 0;
}
 

参考一下,如有帮助,望采纳

这个应该还有一个循环语句吧,要循环处理才能得出最大公约数。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632