GCD和LCM
2024-10-18 06:51:20
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 == ) return a;
else return GCD(b, a % b);
} int main()
{
cout << "Hello world!" << endl;
printf("GCD : %d , LCM : %d \n", GCD(, ), * / GCD(, ));
printf("GCD : %d , LCM : %d \n", GCD(, ), * / GCD(, ));
printf("GCD : %d , LCM : %d \n", GCD(, ), * / GCD(, )); return ;
}
但是有些时候, 我们需要注意, 使用 long long int , 防止部分题目进行卡数据, 注意题目中的数据范围
最新文章
- Java 多线程编程
- nodejs review-01
- REACT day 1
- ios中图片拉伸用法
- Java魔法堂:枚举类型详解
- Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告
- Android中Parcelable接口用法
- Linux中如何查看文件的最初创建时间
- Hadoop学习地址
- 关于vim打开中文文件出现乱码问题
- Lua与C/C++交互问题
- 设置ulabel的行间距
- CSS基础:层叠顺序和层叠上下文
- 非常不错的svg教程
- 引擎设计跟踪(九.14.2 final) Inverse Kinematics: CCD 在Blade中的实现
- 一个小误区 JS中的contains
- ubuntu 14.04 安装 eclipse
- Zookeeper命令行world
- [转]MySQL实现分页查询
- PAT 1032 Sharing[hash][链表][一般上]