C++/欧几里得算法 求两个数的最大公约数(Greatest Common Divisor, GCD)

C++/欧几里得算法 求两个数的最大公约数(Greatest Common Divisor, GCD)_第1张图片

C++/欧几里得算法 求两个数的最大公约数(Greatest Common Divisor, GCD)_第2张图片

 

附上 C++ 程序:(输入两个均为正整数的情况,其他情况请自行考虑。)

#include 
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<

 

你可能感兴趣的:(c++)