求最多大公约数哪里错了,大家帮我看看

#include<stdio.h>
int main()
{
int m,n,r;
printf("请输入两个数");
do
{
scanf("%d%d\n",&m,&n);
}while(m<=0||n<=0);
while((r=m%n)!=0)
{
m=n;
n=r;
}
printf("%d\n",n);
return 0;
}

你好,scanf里面不要加\n,会影响输入


#include<stdio.h>
int main()
{
    int m,n,r;
    printf("请输入两个数");
    do
    {
        scanf("%d%d",&m,&n); //这里的\n删掉
    }while(m<=0||n<=0);
   //循环修改如下
    while(n!=0) 
    {
        r=m%n;
        m=n;
        n=r;
    }
    printf("%d\n",m);
    return 0;
}

r=m%n,你给r赋值了
话说,求最大公约数,你好歹得循环个因数来除吧,你代码里没有任何一个++,只是来回互相赋值,那你求因数的原理是什么呢?


#include<stdio.h>
int main()
{
    int m, n, r;
    printf("请输入两个数");
    do
    {
        scanf("%d%d", &m, &n);//把\n删掉就行
    } while (m <= 0 || n <= 0);
    while ((r = m%n) != 0)
    {
        m = n;
        n = r;
    }
    printf("%d\n", n);
    return 0;
}