当前位置:网站首页>【Day_08 0426】求最小公倍数
【Day_08 0426】求最小公倍数
2022-08-01 17:40:00 【安河桥畔】
求最小公倍数
题目来源
牛客网:求最小公倍数
题目描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1≤a,b≤100000
输入描述
输入两个正整数A和B。
输出描述
输出A和B的最小公倍数。
示例1
输入
5 7
输出
35
示例2
输入
2 4
输出
4
思路分析
解法一
- 暴力求解
- 从1开始与两数中较小的数相乘,找到能整除较大数的第一个成绩,这个数便是最小公倍数
解法二
- 求最小公约数
- 根据最小公倍数的公式,最小公倍数=两数乘积/最大公约数
- 通过辗转相除法得到两数的最大公约数
辗转相除法:又叫欧几里得算法,用于计算两个非负整数a和b的最大公约数,设a、b两个数的最大公约数为n,则ka+b,b的公约数也为n。以除数和余数反复作除法运算,当余数为0时,当前的除数就是最大公约数。参考文章:辗转相除法求最大公约数
代码展示
解法一
#include<iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b)
{
int x = max(a, b);
int n = min(a, b);
long long mul;
for (int i = 1; i <= x; i++)
{
mul = n * i;
if (mul % x == 0)
{
break;
}
}
cout << mul << endl;
}
}
解法二
#include<iostream>
using namespace std;
int Gcd(int a, int b)
{
int temp = 0;
while (temp)
{
//无论a大还是b大,经过一轮循环后,a都比b大
//如果a比b大,那么取模得到的是一个较小的数字,把这个数赋给b后,a一定比b大
//如果b比a大,那么第一轮循环会将较大的数赋值给a,取模得到的数字便是a本身,相当于将两个数进行了交换
temp=a%b;
a = b;
b = temp;
}
return a;
}
int main() {
int a, b;
while (cin >> a >> b)
{
cout << a * b / Gcd(a, b);
}
}
边栏推荐
- opencv real-time face detection
- CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) 题解
- SQL函数 TO_CHAR(一)
- 星途一直缺颠覆性产品?青岛工厂这款M38T,会是个突破点?
- GTK修改pixmap像素,提取pixmap像素RGB值
- 基于BiGRU和GAN的数据生成方法
- C语言:表达式求值详解
- Are online account opening commissions reliable? Is online account opening safe?
- 关于Mysql服务无法启动的问题
- 2022年SQL大厂高频实战面试题(详细解析)
猜你喜欢
随机推荐
指针和解引用
Topology Parts Disassembly 3D Visualization Solution
golang json returns null
QPalette palette, frame color fill
访问域名直接访问wordpress
创造建材数字转型新视界,中建材如何多边赋能集团业务快速发展
LeaRun.net快速开发动态表单
When custom annotations implement log printing, specific fields are blocked from printing
OpenCV安装、QT、VS配置项目设置
zabbix部署和简单使用
[ACNOI2022]物品
【100个网络运维工作者必须知道的小知识!】
2022年SQL大厂高频实战面试题(详细解析)
AIOps智能运维的领跑者擎创科技正式入驻InfoQ 写作社区!
网上开户佣金万一靠谱吗,网上开户安全吗
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
tooltip 控件
C语言:表达式求值详解
统信软件、龙芯中科等四家企业共同发布《数字办公安全创新方案》
md5sum源码 可多平台编译









