当我尝试启动程序时它不起作用并且没有向我显示任何错误。为什么呢?
#include <iostream>
using namespace std;
int main()
{
unsigned a,b;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
{
while(a!=b)
{
if(a>b)
(a==a-b);
else
(b==b-a);
}
}
cout<<"cmmdc=",a;
return 0;
}
答案 0 :(得分:3)
将a==a-b
替换为a=a-b
。
将b==b-a
替换为b=b-a
。
运算符==
是比较,它不会修改其参数。运算符=
是赋值,它将其左参数修改为其右参数的值。
将cout<<"cmmdc=",a
替换为cout<<"cmmdc="<<a
,否则将不会打印a
。
答案 1 :(得分:0)
即使将==
更改为=
s,如果a
和b
中的任何一个而不是{0}}都为0,您将获得无限循环。那,改为使用这个循环:
while (b != 0) {
const unsigned olda = a;
a = b;
b = olda % b;
}
// GCD is now in a.
答案 2 :(得分:0)
找到两个数字的gcd是最简单的方法:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int a,b;
cout<<"a = ";
cin>>a;
cout<<"b = ";
cin>>b;
cout<<"GCD = " << __gcd(a,b);
}