C++实现:求最大公约数及能被m和n整除的最大数
需积分: 9 7 浏览量
更新于2024-07-13
收藏 8.66MB PPT 举报
"该资源是一份关于C++的完整版课件,主要讲解了如何找到两个整数m和n的最大公约数(Greatest Common Divisor, GCD)。课程由谭浩强编著,出自清华大学出版社,由南京理工大学的陈清华和朱红制作。课件不仅涵盖了C++的基本知识,还介绍了C语言的发展历程以及C++语言的特点和优势。"
在课件中,首先提到了C++语言的发展背景,起源于B语言和C语言,C++是在C语言基础上的扩展和增强,旨在提供更高效、强大的编程能力。C语言的特点包括结构化编程、高级与汇编语言的结合、丰富的运算符和良好的可移植性。其灵活性使得C语言在各种规模的项目中都能发挥作用,而C++则在此基础上增加了面向对象的特性。
接着,课件引入了寻找最大公约数的问题。这里给出了一段C++代码,用于计算两个整数m和n的最大公约数。这段代码首先通过比较确定m和n的较小值r,然后使用一个for循环从1遍历到r-1,检查每个i是否能同时整除m和n。如果找到这样的i,就将其赋值给变量a,最后输出a作为最大公约数。
具体代码如下:
```cpp
int r = (m > n) ? n : m;
for(int i = 1; i < r; i++) {
if((m % i == 0) && (n % i == 0)) {
int a = i;
}
}
std::cout << a;
```
需要注意的是,这段代码存在一个小问题,即变量a的值可能在循环内部被多次覆盖,但在循环外部并未做处理。正确的做法是将a的声明移出循环,并在找到最大公约数后立即终止循环,例如使用break语句。完整的修正代码可能如下所示:
```cpp
int r = (m > n) ? n : m;
int a = 1; // 初始化为1,因为1总是任何非零整数的因子
for(int i = 2; i < r; i++) { // 从2开始,因为1总是公约数
if((m % i == 0) && (n % i == 0)) {
a = i;
break; // 找到后立即跳出循环
}
}
std::cout << a;
```
通过这种方式,我们可以有效地找到两个整数的最大公约数。这个例子展示了C++的基本语法和流程控制,对于学习C++编程的初学者来说是非常有价值的实践。
2024-12-22 上传
2024-12-22 上传
2024-12-22 上传
2024-12-22 上传
2024-12-22 上传
2024-12-22 上传
欧学东
- 粉丝: 1018
- 资源: 2万+
最新资源
- play-bootstrap:用于Bootstrap的Play框架库
- koa-fetchr:Fetchr 的中间件和 Koa 的兼容性包装器
- 基于GA遗传优化的TSP最短路径计算仿真
- TPV2-P2:还有一个理由不雇用我
- pepper-metrics:Pepper Metrics是一个工具,它可以帮助您使用RED方法收集运行时性能,然后将其输出为日志时间序列数据,默认情况下,它使用prometheus作为数据源,使用grafana作为UI
- 演讲少-项目开发
- LuaLSP:支持魔兽世界API的Lua语言服务器协议
- spsstonybrook.github.io
- MySpider:Java网络爬虫MySpider,特点是组件化,可插拔式的,可以根据一套接口实现你自己自定义的网络爬虫需求(本人JavaSE的温习项目,适合java新人)
- 基于ATtiny13的键控简单调光器-电路方案
- h2-h3-automated-measurement:自动测量h2和h3的工具
- pcb2gcode:此存储库已停产,开发仍在继续
- compass:Compass是一个轻量级的嵌入式分布式数据库访问层框架
- privacy-terms-observatory:隐私权条款天文台是已发布的隐私权和热门网站条款的存档
- 美团双buffer分布式ID生成系统
- *(星号)-项目开发