当前位置:网站首页>【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);
}
}
边栏推荐
猜你喜欢

基于BiGRU和GAN的数据生成方法

数字化采购管理系统开发:精细化采购业务流程管理,赋能企业实现“阳光采购”

星途一直缺颠覆性产品?青岛工厂这款M38T,会是个突破点?
一加OnePlus 10RT出现在Geekbench上 产品发布似乎也已临近

基于ORB-SLAM2的改进代码

浅谈游戏音效测试点

ROS2系列知识(5):【参数】如何管理?

How can become a good architect necessary skills: painting for all the people praise the system architecture diagram?What is the secret?Quick to open this article and have a look!.

Detailed explanation of the working principle of crystal oscillator

SQL窗口函数
随机推荐
浅谈游戏音效测试点
程序员架构修炼之道:如何设计“易理解”的系统架构?
[ACNOI2022]物品
BITS Pilani|SAC-AP:基于 Soft Actor Critic 的深度强化学习用于警报优先级
Topology零部件拆解3D可视化解决方案
金仓数据库 OCCI迁移指南(3. KingbaseES的OCCI特性支持)
关于单应性矩阵的若干思考
08 Spark cluster construction
Flask框架实战
QT基础功能,信号、槽
B011 - 51-based multifunctional fingerprint smart lock
ROS2系列知识(6):Action服务概念
极化微波成像概述2
一加OnePlus 10RT出现在Geekbench上 产品发布似乎也已临近
QT_QThread线程
棕榈油罐区数字化转型
基于ORB-SLAM2的改进代码
Basic image processing in opencv
实现mnist手写数字识别
素域和扩域