你这代码问题很多
1.if没加括号,导致c*i不管if进不进它都执行
2.当进入循环的时候i并没有退回2,而是继续自增,导致错误
3.你这代码效率很低,搜一搜辗转相除法
感觉思路完全不对啊,效率也非常低
按你的逻辑,修改如下:
#include <stdio.h>
int gcd(int a,int b)
{
int m=a,n=b;
int i,c=1;
for(i=2;i<=m&&i<=n;i++)
{
if(a%i==0 && b%i==0)
{
a/=i;
b/=i;
c*=i;
i--;
}
}
printf("%d",c);
return c;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
gcd(a,b);
}
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
printf("请任意输入两个数:");
scanf("%d%d", &a, &b);
while((a-b) != 0)
{
if(a>b)
a = a-b;
else
b = b-a;
}
printf("最大公约数为:%d\n", b);
return 0;
}