问题标题: 酷町堂:1149

0
0
已解决
朱敏行
朱敏行
中级守护
中级守护

int a,b,r=1,s;
    cin>>a>>b;
    s=a*b;
    while(r!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    cout<<s/a;
    while(a%b!=0)
 {
  r=a%b;
  a=b;
  b=r;
 }
 cout<<b;
 return 0;

 

哪里出错?


0
已采纳
程飞
程飞
高级光能
高级光能

第一个while循环执行结束之后a和b的值已经改变了,,所以第二次while循环的时候会遇到问题

0
时梓繁
时梓繁
修练者
修练者

while(r!=0)

{

m=n;

n=r;

r=m%n;

}
0
叶奥瑞
叶奥瑞
修练者
修练者

用辗转相除法

while(m%n!=0)
    {
        r=m%n;
        m=n;
        n=r;
    }

后面的自己写

0
尹宗鑫
尹宗鑫
新手守护
新手守护
int  gcd(int x,int y)
{ if(y==0) //如果后面的y=0返回前面的x 
    return x;
else return gcd(y,x%y);
}
0
张安泰
张安泰
修练者
修练者

第一个while循环执行结束之后a和b的值已经改变了,,所以第二次while循环的时候会遇到问题

要用m n把a,b保存下来

0
0
朱敏行
朱敏行
中级守护
中级守护

大佬们,鉴于我当时弱弱的水平emm 高级词汇真看不懂啊 所以不知道正确不 也不会写 所以没有采纳,大佬别怪我 祝你们越来越棒!

我要回答