E12.【C语言】练习:求两个数的最大公约数

server/2025/1/14 20:55:30/

目录

1.枚举 

2.辗转相除法 


1.枚举 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int a = 0;int b = 0;int tmp = 0;scanf("%d %d", &a, &b);if (a < b){for (int i=1; i < a; i++){if (0==a% i  && 0==b%i)tmp = i;}}if (a>b){for (int i = 1; i < b; i++){if (0 == b % i && 0 == a % i)tmp = i;}}if (a = b)tmp = a;printf("%d", tmp);return 0;
}

注意i不能从0开始否则有Integer division by zero报错,即整数除以零

但是代码可以进一步简化:

输入两个数-->找出最小数-->从最小数开始:从大向小找,一旦找到就是最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int a = 0;int b = 0;int tmp = 0;scanf("%d %d", &a, &b);if (a > b)tmp = b;elsetmp =a;while (1)//一直循环{if (0 == a % tmp && 0 == b % tmp){printf("%d", tmp);break;}tmp--;}return 0;
}

2.辗转相除法 

定义:先用较大的数除以较小的数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。此时的除数就是所求的最大公约数。

18%24=18-->24%18=6-->18%6=0-->6是最大公约数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{int a = 0;int b = 0;int tmp = 0;scanf("%d %d", &a, &b);while (tmp=a%b)//循环,m%n=0退出{a = b;b = tmp;}printf("%d", b);return 0;
}

最小公倍数=a*b/最大公约数


http://www.ppmy.cn/server/158378.html

相关文章

vue使用自动化导入api插件unplugin-auto-import,避免频繁手动导入

‌unplugin-auto-import‌是一个现代的自动导入插件&#xff0c;旨在简化前端开发中的导入过程&#xff0c;减少手动导入的繁琐工作&#xff0c;提升开发效率。它支持多种构建工具&#xff0c;包括Vite、Webpack、Rollup和esbuild&#xff0c;并且可以与TypeScript配合使用&…

贪心算法笔记

贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…

【经验】MCU在keil和IAR中开启FPU 硬件浮点运算单元

本文是总结归纳了两篇笔记: 关于华大/小华 HC32F460 在IAR环境中&#xff0c;无法启用FPU 硬件浮点运算单元的解决方案 【经验】雅特力MCU在Keil和IAR中开启和关闭浮点运算单元&#xff08;FPU&#xff09;的配置方法及注意事项 第一步 先查看所使用的MCU的手册,是否内置了FPU…

Oracle 学习指南与资料分享

Oracle 学习资料 Oracle 学习资料 Oracle 学习资料 在当今数字化飞速发展的浪潮中&#xff0c;Oracle 数据库凭借其卓越的性能、强大的功能以及高度的可靠性&#xff0c;稳坐数据库领域的前沿宝座&#xff0c;广泛应用于金融、电信、航空航天等诸多关键行业。如果你有志于深入…

Word 转成pdf及打印的开源方案支持xp

Word转成pdf、打印的方案几乎没有免费开源的方案&#xff0c;现在提供一个通过LibreOffice实现的方案 操作依赖LibreOffice需要安装&#xff0c;点此下载老版本 5.4.7.2是最后一个支持xp的 版本如需xp要请安装此版本 LibreOffice官方介绍 LibreOffice 是一款开放源代码的自…

C#中的常用集合

目录 一、动态数组ArrayList 二、List 三、栈&#xff08;Stack&#xff09; 四、队列&#xff08;Queue&#xff09; 五、字典&#xff08;Dictionary&#xff09;,int> 一、动态数组ArrayList ArrayList 是 C# 中提供的一种动态数组类&#xff0c;位于命名空间 Syste…

基于python Numpy的24位音频数据读取实例解析

一 概念 24位PCM编码是一种比较少见的音频编码格式&#xff0c;它采用了更高的分辨率来表达音频信号。每个采样点用3个字节&#xff08;24位&#xff09;的无符号整数表示&#xff0c;取值范围在0到2^24-1之间。这意味着它可以表达更大的动态范围和更细微的音频细节。但是&…

ubuntu 下生成 core dump

在Ubuntu下,发现程序崩溃后不生成core dump文件, 即使设置了ulimit -c unlimited后仍然无效。 1.ulimit -c unlimited 输出的的含义是核心转储文件的大小限制,单位是blocks,默认是0,表示不生成core dump文件。 2. 重设core_pattern ulimit -c unlimited后,核心转储文件…