求大神给看看,我的c++程序哪里出问题了?请指教。。。。

2025-01-06 15:13:30
推荐回答(2个)
回答1:

首先辗转相除不是这么个步骤

至于为什么运行出错,

 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;
}

回答2:

你自己把输入的两个数代入你的程序一步步手动模拟,就知道错在哪里了,这是找错的常用方法(不要偷懒)。而且求个最大公约数和最小公倍数至于写得这么复杂吗!