当前位置: 首页 > article >正文

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;
}

执行结果为:

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

 然后再执行正序:

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

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


http://www.kler.cn/a/349803.html

相关文章:

  • git push到远程仓库时无法推送大文件
  • Python练习(2)
  • 深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
  • 7. 马科维茨资产组合模型+金融研报AI长文本智能体(Qwen-Long)增强方案(理论+Python实战)
  • 【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
  • Spring事务和事务传播机制
  • 前沿论文解读:CARAT
  • 【LangChain】(三)如何利用LangChain和TruLens提升大规模语言模型的质量?全面教程与实战案例!
  • -bash: dig: command not found
  • C++中的vector介绍(常用函数)
  • 龙信科技:引领电子物证技术,助力司法公正
  • 【WebGis开发 - Cesium】三维可视化项目教程---图层管理基础
  • STM32CUBE导入DSP库时出现大量multiple definition,first defined here
  • AutoML:自动化机器学习的技术与应用
  • Leetcode 第 359 场周赛题解
  • Vue 3 数组变更详解:哪些操作会修改原数组?| 笔记
  • 信息与计算科学:“数学 + 计算机”,奏响未来科技新乐章
  • 微信小程序手机号授权获取(aes加密手机号)
  • 【WKWebview】WKWebView Cookie 同步
  • 【漏洞复现】SpringBlade menu/list SQL注入漏洞
  • 将图片转换为视频
  • 【Linux】Linux进程概念
  • 域2:资产安全 第5章-保护资产安全
  • 在阿里云Milvus中管理Databases
  • 展示图片--系统篇
  • [论文笔记] llama3.2 蒸馏