当前位置:网站首页>【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);
}
}
边栏推荐
猜你喜欢
随机推荐
QPalette调色板、框架色彩填充
广汽埃安“弹匣电池”,四大核心技术,出行安全保障
半自动化爬虫-爬取一个网站的内容及回复
QLineEdit learning and use
SQL函数 TO_CHAR(三)
百度网盘下载速度提升100倍
关于LocalDateTime的全局返回时间带“T“的时间格式处理
极化微波成像概述
QT basic functions, signals, slots
计算IoU(D2L)
C语言理论--笔试面试基础稳固
SQL的substring_index()用法——MySQL字符串截取
极化微波成像概述3
生物制药产业发展现状和趋势展望
tooltip 控件
BITS Pilani|SAC-AP:基于 Soft Actor Critic 的深度强化学习用于警报优先级
加州大学|通过图抽象从不同的第三人称视频中进行逆强化学习
QT基础功能,信号、槽
TCP百万并发服务器优化调参
关系运算符和if,else语句









