C语言实例_14之求俩数的最大公约数和最小公倍数

1.最大公约数和最小公倍数概述

最大公约数(Greatest Common Divisor,简称GCD)

也称为最大公因数,是指两个或多个整数共有约数中最大的一个。例如,对于整数12和18,它们的约数分别为:

  • 12的约数有1、2、3、4、6、12。
  • 18的约数有1、2、3、6、9、18。

可以看出它们共有的约数有1、2、3、6,其中最大的就是6,所以12和18的最大公约数是6。

最小公倍数(Least Common Multiple,简称LCM)

是指两个或多个整数公有的倍数中最小的一个。继续以12和18为例,它们的倍数分别为:

  • 12的倍数有12、24、36、48、60、72……
  • 18的倍数有18、36、54、72、90……

可以发现它们公有的倍数有36、72……其中最小的是36,所以12和18的最小公倍数是36。

2. 求解最大公约数和最小公倍数的方法

1. 辗转相除法(欧几里得算法)求最大公约数

用较大数除以较小数得到商和余数,再用除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。

例如求252和105的最大公约数:

  • 252 ÷ 105 = 2……42
  • 105 ÷ 42 = 2……21
  • 42 ÷ 21 = 2……0

此时余数为0,除数21就是252和105的最大公约数。

2. 通过最大公约数求最小公倍数

两个数的最小公倍数等于这两个数的乘积除以它们的最大公约数。

例如已知12和18的最大公约数是6,那么它们的最小公倍数 = 12 × 18 ÷ 6 = 36 。

3. 辗转相除法

image.png

4. C++ 代码实现及分析

#include <iostream>
using namespace std;// 求最大公约数的函数,使用辗转相除法
int gcd(int a, int b) {while (b!= 0) {int temp = b;b = a % b;a = temp;}return a;
}// 求最小公倍数的函数
int lcm(int a, int b) {return a * b / gcd(a, b);
}int main() {int num1, num2;cout << "请输入两个整数:";cin >> num1 >> num2;int greatestCommonDivisor = gcd(num1, num2);int leastCommonMultiple = lcm(num1, num2);cout << num1 << " 和 " << num1 << " 的最大公约数是:" << greatestCommonDivisor << endl;cout << num1 << " 和 " << num1 << " 的最小公倍数是:" << leastCommonMultiple << endl;return 0;
}

代码分析

  • 在代码中,定义了两个函数 gcdlcm
    • gcd 函数用于求两个数的最大公约数,它通过不断地进行辗转相除操作,直到余数为0,此时返回的 a 就是最大公约数。例如,传入 a = 252b = 105,在函数内部的循环过程中,会不断更新 ab 的值,直到 b 变为0,最终得到最大公约数。
    • lcm 函数用于求最小公倍数,它直接调用 gcd 函数先求出最大公约数,然后按照两个数的乘积除以最大公约数的公式来计算最小公倍数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/62351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis:Mybatis快速入门

Mybatis的官方文档是真的非常好&#xff01;非常好&#xff01; 点一下我呗&#xff1a;Mybatis官方文档 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可…

JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南

1、简述 随着 Web 应用的用户量和数据量增加&#xff0c;网络带宽和页面加载速度逐渐成为瓶颈。为了减少数据传输量&#xff0c;提高用户体验&#xff0c;我们可以使用 Gzip 压缩 HTTP 响应。本文将介绍如何在 Spring Boot 3 中实现 Gzip 压缩优化。 2、配置 Spring Boot 3 对…

Mybatis集成篇(一)

Spring 框架集成Mybatis 目前主流Spring框架体系中&#xff0c;可以集成很多第三方框架&#xff0c;方便开发者利用Spring框架机制使用第三方框架的功能。就例如本篇Spring集成Mybatis 简单集成案例&#xff1a; Config配置&#xff1a; Configuration MapperScan(basePack…

路面交通工具和个数识别,支持YOLO,COCO,VOC三种格式,带标注可识别自行车,摩的,公共汽车,装载机,面包车,卡车,轿车等

预处理 自动定向&#xff1a; 已应用 调整大小&#xff1a; 拉伸至 640x640 增强 每个训练示例的输出&#xff1a; 3 翻转&#xff1a; 水平 自行车 公交车

Java 线程中的分时模型和抢占模型

Java 线程中的分时模型和抢占模型 线程的调度机制决定了多个线程在 CPU 上的执行方式&#xff0c;其中主要有两种常见的模型&#xff1a;分时模型和抢占模型。这两种模型的核心区别在于线程的执行时间分配和切换方式。 1. 分时模型&#xff08;Time-Sharing Model&#xff09;…

长时间无事可做是个危险信号

小马加入的是技术开发部&#xff0c;专注于Java开发。团队里有一位姓隋的女同事&#xff0c;是唯一的web前端工程师&#xff0c;负责页面开发工作&#xff0c;比小马早两个月入职。公司的项目多以定制化OA系统为主&#xff0c;后端任务繁重&#xff0c;前端工作相对较少。在这样…

ffmpeg 预设的值 加速

centos 安装ffmpeg 编译安装 官网获取最新的linux ffmpeg 代码 https://ffmpeg.org//releases/ mkdir -p /data/app/ffmpeg cd /data/app/ffmpeg wget http://www.ffmpeg.org/releases/ffmpeg-7.1.tar.gz tar -zxvf ffmpeg-7.1.tar.gz#安装所需的编译环境 yum install -y \…

在Java中使用Apache POI导入导出Excel(二)

本文将继续介绍POI的使用&#xff0c;上接在Java中使用Apache POI导入导出Excel&#xff08;一&#xff09; 使用Apache POI组件操作Excel&#xff08;二&#xff09; 14、读取和重写工作簿 try (InputStream inp new FileInputStream("workbook.xls")) { //Inpu…

LABVIEW Modbus 串口

VISA写入&#xff1a; 写入缓冲区改为“十六进制显示”&#xff0c;并输入数据。 数据缓冲区显示&#xff1a;使用“十六进制”显示。

第四节:jsp内的request和response对象

Jsp内置对象 Requset,当客户端请求一个jsp页面的时候&#xff0c;jsp页面所在的服务器端将客户端发出的所有请求信息封装在内置对象request中&#xff0c;因此用该对象可以获得客户端提交的信息 方法&#xff1a; Void setAttribute(String key,Object obj)设置属性的属性值…

Verilog使用liberty文件中cell单元的demo

Liberty&#xff08;.lib&#xff09;文件是用来描述标准单元库中逻辑单元&#xff08;如门电路、触发器等&#xff09;的时序和功耗特性的&#xff0c;不是用来直接定义Verilog中的元件。在Verilog设计中&#xff0c;我们通常通过实例化模块&#xff08;module&#xff09;来创…

【软考速通笔记】系统架构设计师⑧——系统质量属性与架构评估

文章目录 一、前言二、软件系统质量属性2.1 开发期质量属性2.2 运行期质量属性 三、质量属性场景描述四、系统架构评估方法4.1 方法分类4.2 软件架构分析方法4.3 架构权衡分析法4.4 成本效益分析法 一、前言 笔记目录大纲请查阅&#xff1a;【软考速通笔记】系统架构设计师——…

如何寻找适合的HTTP代理IP资源?

一、怎么找代理IP资源&#xff1f; 在选择代理IP资源的时候&#xff0c;很多小伙伴往往将可用率作为首要的参考指标。事实上&#xff0c;市面上的住宅IP或拨号VPS代理IP资源&#xff0c;其可用率普遍在95%以上&#xff0c;因此IP可用率并不是唯一的评判标准 其实更应该关注的…

FCBP 认证考试要点摘要

理论知识 数据处理与分析&#xff1a;包括数据的收集、清洗、转换、存储等基础操作&#xff0c;以及数据分析方法&#xff0c;如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化&#xff1a;涉及图表类型的选择与应用&#xff0c;如柱状图、折线图、饼图…

初识C++:指针与引用的异同,inline关键字

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 一.指针和引用的关系 1.1 概念 1.2 相似点 1.3 不同点 二.inline关键字 2.1 概念 2.2 工作原理 2.3 使用场景 2.4 注意事项 三.nullptr 3.1 引入背景 3.2 语义和类型 3.3 使用场景 兄弟们共勉 &#xff01;&…

【软考速通笔记】系统架构设计师⑤——软件工程基础知识

文章目录 一、前言二、基础知识点2.1 软件危机2.2 软件生命周期 三、软件过程模型&#xff08;论文&#xff09;3.1 瀑布模型3.2 原型模型3.3 螺旋模型3.4 敏捷模型3.5 软件统一过程模型3.6 软件成熟度模型3.7 软件成熟度模型集成 四、需求工程五、软件测试5.1 根据程序执行状态…

DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解

目录 引言 伪彩色映射的概念 基本原理 查找表&#xff08;Look-Up Table, LUT&#xff09; 步骤 示例映射方案 实现伪彩色映射的C代码 代码详解 伪彩色处理效果展示 总结 扩展知识 LUT 的基本概念 LUT 在伪彩色映射中的应用 示例 引言 在医学影像处理中&#xff0c…

韦东山stm32hal库--定时器喂狗模型按键消抖原理+实操详细步骤

一.定时器按键消抖的原理: 按键消抖的原因: 当我们按下按键的后, 端口从高电平变成低电平, 理想的情况是, 按下, 只发生一次中断, 中断程序只记录一个数据. 但是我们使用的是金属弹片, 实际的情况就是如上图所示, 可能会发生多次中断,难道我们要记录3/4次数据吗? 答:按键按下…

8、运算符

1、运算符相关概念 运算符&#xff1a; 具有一定运算规则的符号 运算符分类&#xff1a; 按照功能分&#xff1a; 赋值运算符 算术运算符 关系运算符 逻辑运算符 其他运算符 位运算符 按照操作数分&#xff1a; 单目运算符 双目运算符 三目运算符 表达式 具有一定意义的式子&…

【Linux网络编程】第二弹---Socket编程入门指南:从IP、端口号到传输层协议及编程接口全解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、Socket 编程预备 1.1、理解源 IP 和目的 IP 1.2、认识端口号 1.2.1、端口号范围划分 1.2.2、理解 &q…