求最大公因数与最小公倍数


最大公因数原理:

(1) 36=24+12
(2) 24=12*2+0
(3) 12=0+12
在第三步中发现b==0,然后返回a,即上一步的b,上上步的a%b

#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b){
  if(b==0){return a;}
  else{
    return gcd(b,a%b);
  }
}
// 超精简写法:
int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
}
int main(int argc, char const *argv[]) {
  printf("%d\n",gcd(24,16));
  return 0;
}

最小公倍数原理:

a*b/gcd(a,b)

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
  if(b==0){return a;}
  else{
    return gcd(b,a%b);
  }
}
int lcm(int a,int b){
  return a/gcd(a,b)*b;   // a*b可能溢出,所以需要先除个gcd(a,b)
}
int main(int argc, char const *argv[]) {
  cout<<lcm(24,16);
  return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 19,107评论 1 19
  • 基本概念 因数 :若A=m×n,则称m,n是A的因数;A是m,n的倍数 一个数的最大因数和最小倍数都...
    AQ王浩阅读 2,182评论 0 4
  • 删掉重新来一次吧,记得改那个脚本修改 /home/ubuntu/eos/scripts/install_depen...
    卢衍泓阅读 1,184评论 0 1
  • 没有人陪伴,没有跨年。 不对,也跨年了,只是我是在梦里跨年了。 没有刻意想要去做跨年这个具有意义的事情,反而更希望...
    Q小姐呢_阅读 179评论 0 0
  • 你在假日的游玩里,心情秀美, 我在走访的街巷里,汗流浃背, 如果零点之前来得及,我要写完走访笔记, 穷极一生,追求...
    汪涛的文本阅读 215评论 0 0