GCD和LCM
GCD _ LCM 是给你两个数A B 的最大公约数, 以及最小公倍数
the greatest common divisor and the least common multiply !
最大公约数最简单、最常见的算法,就是辗转相除法 :
假设 GCD(A , B) ; A / B = P ; A % B = Q; 那么 A = B P + Q;
GCD(B, Q);
GCD (A , B) % GCD (B , Q) = 0 : 因为 A 的表达式当中包括了 B 、 Q;
同理,我们可以由 : Q = A - BP;
GCD (B , Q) % GCD (A , B) = 0;
所以说两者相等, 得到了辗转相除法求得GCD 的方法, 那么 LCM 如何求得呢??
通过A B 的乘法因子来看: GCD 是相同的因子, LCM 是相同的因子只是取一个,
两个想乘,刚刚好可以互补, 即 GCD * LCM = A*B;
所以说最大公约数可以通过最小公倍数来求得!
那么代码 !!:::
#include <iostream> #include <cstdio> #include <cstdlib> #include <cctype> #include <algorithm> #include <cmath> #include <cstring> #include <string> #include <vector> #include <queue> #include <list> #include <map> #include <stack> #include <set> using namespace std; int GCD(int a, int b){ if(b == 0) return a; else return GCD(b, a % b); } int main() { cout << "Hello world!" << endl; printf("GCD : %d , LCM : %d \n", GCD(10, 5), 5 * 10 / GCD(10, 5)); printf("GCD : %d , LCM : %d \n", GCD(10, 20), 20 * 10 / GCD(10, 20)); printf("GCD : %d , LCM : %d \n", GCD(10, 2), 2 * 10 / GCD(10, 2)); return 0; }
但是有些时候, 我们需要注意, 使用 long long int , 防止部分题目进行卡数据, 注意题目中的数据范围
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)