
[编程题]最大公约数和最小公倍数
发布日期:2021-05-07 23:12:04
浏览次数:19
分类:原创文章
本文共 747 字,大约阅读时间需要 2 分钟。
关键词:最大公约数,辗转相除法,最小公倍数
试题链接:
https://www.nowcoder.com/questionTerminal/cf4091ca75ca47958182dae85369c82c
**
最大公约数
**
问题描述:
思路:
求解最大公约数常常会用到辗转相除法(欧几里得算法),基于定理:
若a,b均为正整数,则gcd(a,b)=gcd(b,a%b)。
具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。
可以采用递归的方法求解最大公约数:
int gcd(int a, int b) { if(b==0)return a; else return gcd(a,b%a); }
解决方案:
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 求出a、b的最大公约数。 * @param a int * @param b int * @return int */ int gcd(int a, int b) { if(b==0)return a; else return gcd(b,a%b); }};
**
最小公倍数
**
最小公倍数的计算在最大公约数的基础上进行,若a,b的最小公约数为d,则a,b的最小公倍数为ab/d。
需要注意的是,在计算ab时有可能出现溢出的情况,所以更恰当的写法是:
最小公倍数= a/d*b。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月22日 15时28分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
机器学习(numpy/matplotlib/scipy)学习笔记
2021-05-08
codeforces The Eternal Immortality 题解
2021-05-08
蓝桥杯 历届试题 幸运数 (堆+DFS)
2021-05-08
微信js-sdk使用简述(分享,扫码功能等)
2021-05-08
selenium 的介绍和爬取 jd数据
2021-05-08
【分享-一键在线抠图】在线免费去除图片背景
2021-05-08
layui表格checkbox选择全选样式及功能
2021-05-08
mxsrvs支持thinkphp3.2伪静态
2021-05-08
mui HTML5 plus 下载文件
2021-05-08
环信SDK 踩坑记webIM篇(一)
2021-05-08
通信基础知识
2021-05-08
DSP开发板准备
2021-05-08
测试基本
2021-05-08
c++中istringstream及ostringstream超详细说明
2021-05-08
c++中ifstream及ofstream超详细说明
2021-05-08
c++中explicit和mutable关键字探究
2021-05-08
c语言结构体字节对齐详解
2021-05-08
linux c/c++面试知识点整理(八)
2021-05-08