注册 登录
编程论坛 C语言论坛

1062: 最大公约数;下边的为什么不行 求大佬指教

QQ1236789 发布于 2019-11-12 19:24, 1409 次点击
#include<stdio.h>
int main()
{
    int m,n,i,t,r;
    scanf("%d %d",&m,&n);
    t=1;
    for(i=2;i<m&&i<n;i++)
    {
        if(m%i==0&&n%i==0)
        t=0,r=i;
    }
    printf("%d",r);
    return 0;
}
1 回复
#2
ehszt2019-11-12 19:51
for(i=2;i<m&&i<n;i++)
最大公约数允许等于吧,for(i=2;i<=m&&i<=n;i++)
另外求最大公约数一般用辗转相除法效率较高
#include<stdio.h>
int main()
{
    int m,n,r,t;
    scanf("%d %d",&m,&n);
   if(m<n)
   {
       t=m;
       m=n;
       n=t;
   }
    while(r)
    {
        r=m%n;
        m=n;
        n=r;
    }
    printf("%d",m);
    return 0;
}
1