自学内容网 自学内容网

1.C++经典实例-计算两个数的最大公约数

用户输入两个数字,然后通过程序计算出这两个数字的最大公约数:

最大公约数(greatest common divisor,简写为 gcd ;或highest common factor,简写为hcf),指某几个整数共有因子中最大的一个

#include <iostream>
using namespace std;
 
int main() {
    int n1, n2;
    cout << "输入两个整数: ";
    cin >> n1 >> n2;
 
    // temp最小值进行计算
    int temp=n1;
    if (temp>n2)
    temp=n2;
    int gcd ;
    for (int i = temp;  i>=1; i--) {
        if (n1 % i == 0 && n2 % i ==0) {
            gcd = i;
            break;
        }
    }
 
    cout << "最大公约数为: " << gcd ;
    return 0;
}

以上计算过程简单描述为:

输入两个变量n1 n2分别表示第一个输入的数和第二个输入的数,并且在计算最大公约数的时候,在按n1,n2中小值的进行计算,比如  输入 10 20,那么我们计算按最大10进行计算即可。 最大公约数,不会超过输入的最小值,然后进行循环,倒序进行循环,然后判断,如果两个都同时余数为0的话,则表示计算完成,中止计算,输入最大公约数,

运程程序:

前面输入的当前值每一行表示进行了一次计算,那么从这里我们可以看出,当前计算我们用了5次计算完成,

那么想一想,如果我们按正序的话,可以不可以也来完成呢?下面是按正则写的程序

#include <iostream>
using namespace std;
 
int main() {
    int n1, n2;
    cout << "输入两个整数: ";
    cin >> n1 >> n2;
 
    // 如果 n2 大于 n1 交换两个变量
    int temp=n1;
    if (temp>n2)
    temp=n2;
    int gcd ;
    for (int i = 1;  i<=temp; i++) {
    cout <<"当前值:"<< i << endl;
        if (n1 % i == 0 && n2 % i ==0) {
            gcd = i;           
        }
    }
 
    cout << "最大公约数为: " << gcd ;
    return 0;
}

执行结果为:

我们可以看到两个得到的结果相同,那么我们再来看一下执行过程打印的当前值,每打印一行,则执行一次循环,从上面可以看出,同样的方法,倒序减比正序加,执行的数据量要少一些,但是也有一些例外,比如:

 然后再执行正序:

可以看到两个执行的循环次数一样,看到截图中,有的显示时间,有的不显示,暂时不考虑这个时间,这个时间跟我输入时的等待时间有关,并不是程序实际的运行和执行时间。

想一想,如果有多个数的话,最大公约数应该怎么计算。


原文地址:https://blog.csdn.net/fly_binbin/article/details/142960974

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!