C++/欧几里得算法 求两个数的最大公约数
附上 C++ 程序:(输入两个均为正整数的情况,其他情况请自行考虑。)
#include <iostream>
using namespace std;
/*
思路:(若 a、b 全为0则它们的最大公约数不存在,此处a、b不会同时为0)若 a、b 其中之一为0,则它们的最大公约数为 a、b 中非0的那个; a、b 都不为0,则使新 a = b,新 b = a % b ,然后重复该过程。
这就是欧几里得算法。
*/
int main(int argc, const char * argv[]) {
int dividend_1=0;
int dividend_2=0;
int temp=0; // 临时变量保存dividend1
while (cin>>dividend_1>>dividend_2) {
while (dividend_2>0) { // dividend_2不为0时一直更新
temp=dividend_1;
dividend_1=dividend_2;
dividend_2=temp%dividend_2;
}
cout<<dividend_1<<endl; // dividend_2为0时dividend_1即是所求
}
return 0;
}