最大公约数(GCD)与最小公倍数(LCM)的计算
给出两个数a、b,求最大公约数(GCD)与最小公倍数(LCM)
一、最大公约数(GCD)
最大公约数的递归:
* 1、若a可以整除b,则最大公约数是b * 2、如果1不成立,最大公约数便是b与a%b的最大公约数 * 示例:求(140,21) * 140%21 = 14 * 21%14 = 7 * 14%7 = 0 * 返回7int GCD(int a,int b)
{
return a%b?GCD(b,a%b):b;
}
二、最小公倍数(LCM)
求出最大公约数后m后,最小公倍数就是a*b/m了,很简单。这里做一个扩展,求1~n共n个数的最小公倍数
思路:
设两个数分别为a,b
先用辗转相除法求gcd(a,b),也就是a,b的最大公约数
然后lcm(a,b)=a*b/gcd(a,b)
n个数的情况:
设n个数分别为a1,a2,……an
则先求b1=lcm(a1,a2)
再求b2=lcm(b1,a3)
b3=lcm(b2,a4)
b4=lcm(b3,a5)
……
最后求到b[n-1]就是答案
复杂度接近O(n)
代码如下:
#include <iostream>
using namespace std;
int GCD(int a,int b)
{
return a%b?gcd(b,a%b):b;
}
int main()
{ int i,n,m,temp=,ans=;
cin >> n;
for (i=; i<=n; i++)
{
temp=GCD(ans,i);
ans=ans*i /temp;
}
cout << ans << '\n'; return ;
}
最大公约数(GCD)与最小公倍数(LCM)的计算的更多相关文章
- 最大公约数gcd、最小公倍数lcm
最大公约数(辗转相除法) 循环: int gcd(int a,int b) { int r; ) { r=b%a; b=a; a=r; } return b; } 递归: int gcd(int a, ...
- 最大公约数gcd与最小公倍数lcm
最大公约数:gcd 最大公倍数:lcm gcd和lcm的性质:(我觉得主要是第三点性质) 若gcd (
- ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))
gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm ( gcd就是gcd(a, b), ( •̀∀•́ ) ...
- 1012 最小公倍数LCM
1012 最小公倍数LCM 基准时间限制:1 秒 空间限制:131072 KB 输入2个正整数A,B,求A与B的最小公倍数. Input 2个数A,B,中间用空格隔开.(1<= A,B < ...
- Solve Equation gcd(x,y)=gcd(x+y,lcm(x,y)) gcd(x,y)=1 => gcd(x*y,x+y)=1
/** 题目:Solve Equation 链接:http://acm.hnust.edu.cn/JudgeOnline/problem.php?id=1643 //最终来源neu oj 2014新生 ...
- 1011 最大公约数GCD
1011 最大公约数GCD 基准时间限制:1 秒 空间限制:131072 KB 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B < ...
- 51Nod--1011最大公约数GCD
1011 最大公约数GCD 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用 ...
- hdu 5974 A Simple Math Problem gcd(x,y)=gcd((x+y),lcm(x,y))
题目链接 题意 现有\[x+y=a\\lcm(x,y)=b\]找出满足条件的正整数\(x,y\). \(a\leq 2e5,b\leq 1e9,数据组数12W\). 思路 结论 \(gcd(x,y)= ...
- vjudge 最大公约数GCD 直接求最大共约束和最小公倍数的指令
原题链接https://vjudge.net/contest/331993#problem/C 输入2个正整数A,B,求A与B的最大公约数. Input2个数A,B,中间用空格隔开.(1<= A ...
随机推荐
- linux下软、硬链接的创建和删除
linux下软.硬链接的创建和删除 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复 ...
- Installing haproxy load balancing for http and https--转载
This example will guide you through a simple IP based load balancing solution that handles ssl traff ...
- for in可遍历原型链上扩展的属性,Object.keys() 只遍历自身属性
一.for in 1.使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问: Object.prototype.say="cgl"; // 修改Object.pr ...
- APPCAN的mas服务报错
报错信息 主要是: [meap_im_java]load java warning { [Error: Cannot find module 'java'] code: 'MODULE_NOT_FOU ...
- 从以前的项目格式迁移到 VS2017 新项目格式
以前的项目格式使用的是 csproj 的格式,但是 .net core 支持使用 project.json 格式的项目文件,后来还是决定不使用这个格式. VS2017 的项目格式更好读.更简单而且减少 ...
- JavaScript 正则表达式RegExp 和字符串本身的正则表达式
JavaScript 正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索模 ...
- 哪个类可用于处理 Unicode?
A. InputStreanReader的构造函数: InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader ...
- Java - 数组JVM角度详解
http://developer.51cto.com/art/201001/176671.htm
- WAI-ARIA无障碍网页应用属性完全展示——张鑫旭
一.你至少应该知道ARIA是什么东西! WAI-ARIA指无障碍网页应用.主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员.尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏 ...
- c语言中函数的形参test(int *&a)?
今天在看一段c代码的时候看到一个函数的形参是(int *&a)居然是这个东西,这让我好生疑惑啊,不知道用这么多的地址符号用意何在呢?传址么? 那也不必这样,只需要用指针完全能够达到这样的效果啊 ...