Dav*_*ane 4 c++ algorithm do-while modulus
我是C++的新手,我正在尝试创建一个函数来实现欧几里德算法,该算法返回两个整数输入的最大公约数.
我正在采取的当前方法一直在崩溃 - 你能帮助我理解为什么吗?
int main() {
int a = 0;
int b = 0;
cin >> a;
cin >> b;
do {
if ( a > b ) a = a % b;
else if ( a < b ) b = b % a;
else if ( a == b ) break;
} while ( ( a || b ) != 0 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
大卫
while ( ( a || b ) != 0 );
Run Code Online (Sandbox Code Playgroud)
这是错的.它应该是
while ( a != 0 && b != 0 );
Run Code Online (Sandbox Code Playgroud)
另外,Euclid的算法可以递归地简洁地实现:
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a%b);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |