当前位置:网站首页>【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);
}
}
边栏推荐
猜你喜欢
随机推荐
研发团队数字化转型实践
CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) Solution
后台管理系统的权限思路
Bugku-Misc-贝斯手
DBPack SQL Tracing 功能及数据加密功能详解
不需要写代码,快速批量修改文件夹中图片的格式
GRUB2的零日漏洞补丁现已推出
8月微软技术课程,欢迎参与
力扣每日一题-第45天-697. 数组的度
B011 - 基于51的多功能指纹智能锁
B005 – 基于STC8的单片机智能路灯控制系统
The site is not found after the website is filed. You have not bound this domain name or IP to the corresponding site! The configuration file does not take effect!
B011 - 51-based multifunctional fingerprint smart lock
M1芯片电脑安装cerebro
小贝拉机器人是朋友_普渡科技召开新品发布会,新一代送餐机器人“贝拉”温暖登场...
ROS2系列知识(6):Action服务概念
EpiSci|片上系统的深度强化学习:神话与现实
QT_QThread线程
SQL函数 TO_CHAR(一)
极化微波成像概述









