首先辗转相除不是这么个步骤
至于为什么运行出错,
temp=m%n;
gcd=n%temp;
n=temp%gcd;
这3句里面temp和gcd为0时都会报错。
比如m=18,n=9,这时temp = 0
int gcd_lcm (int n,int m)//辗转相除求最大公约数
{
int s1,s2,temp;
if(n>m)
{
s1=n;
s2=m;
}
else
{
s1=m;
s2=n;
}
while(s2)
{
temp=s1%s2;
s1=s2;
s2=temp;
}
return s1;
}
你自己把输入的两个数代入你的程序一步步手动模拟,就知道错在哪里了,这是找错的常用方法(不要偷懒)。而且求个最大公约数和最小公倍数至于写得这么复杂吗!