【欧拉计划第 5 题】最小公倍数 Smallest multiple

简介: 【欧拉计划第 5 题】最小公倍数 Smallest multiple

Problem 5 Smallest multiple

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

问题 5 最小公倍数

2520 是可以除以 1 到 10 的每个数字而没有任何余数的最小数字。

能被 1 到 20 的所有数整除的最小正数是多少?

理论要点

最小公倍数

引用下百科的解释:

两个或多个整数公有的倍数叫做它们的公倍数,其中除 0 以外最小的一个公倍数就叫做这几个整数的最小公倍数

整数 a , b a,ba,b 的最小公倍数记为 [ a , b ] [a,b][a,b] ,同样的, a , b , c a,b,ca,b,c 的最小公倍数记为 [ a , b , c ] [a,b,c][a,b,c] ,多个整数的最小公倍数也有同样的记号

那如何计算最小公倍数呢?

首先,把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)

例如:

最大公约数

最大公约数,a , b a,ba,b 的最大公约数记为 ( a , b ) (a,b)(a,b)

即:短除寻找公因数数,直到找不出公因数,左侧公因数乘积即为最大公约数

最大公约数和最小公倍数的关系

两个数的乘积等于这两个数的最大公约数与最小公倍数的乘积

若有两数 a , b a,ba,b,它们的最大公约数是 p pp,最小公倍数是 q qq

那么

a × b = p × q \large a×b=p×qa×b=p×q

该公式可改写为

a × b = g c d ( a , b ) × q \large a×b=gcd\left (a,b \right)×qa×b=gcd(a,b)×q

那么,我们给出最小公倍数的计算公式

l c m ( a , b ) = a b g c d ( a , b ) = q \large lcm(a,b)=\frac{ab}{gcd(a,b)}=qlcm(a,b)=gcd(a,b)ab=q

欧几里得算法

又称辗转相除法,用于计算两个非负整数 a , b a,ba,b 的最大公约数

  • 用较小数除较大数
  • 再余数(第一余数)去除除数
  • 再用出现的余数(第二余数)去除第一余数
  • 迭代,直到最后余数是0为止。若要求两个数的最大公约数,则最后的除数就是这两个数的最大公约数

计算公式

g c d ( a , b ) \large gcd\left (a,b \right)gcd(a,b)

思路分析

根据欧几里得算法计算公式,计算得到两数最大公约数,再由最小公倍数计算公式得出最小公倍数。然后让两个数的最小公倍数和第三个数计算最小公倍数,迭代求算即可

代码实现

/*
 * @Author: coder-jason
 * @Date: 2022-04-11 14:08:31
 * @LastEditTime: 2022-04-11 14:59:47
 */
#include <iostream>
using namespace std;
typedef long long variable; // 定义类型别名
variable gcd(variable a, variable b) // gcd 实现
{
    return b>0 ? gcd(b, a % b) : a;
}
int main()
{
    variable ans = 1;
    for (int i = 2; i <= 20; i++)
    {
        ans = ans * i / gcd(ans, i);
    }
    cout << ans << endl;
    return 0;
}

答案:232792560

相关文章
|
机器学习/深度学习 算法
低光图像增强
这篇摘要讨论了低光照图像增强技术,涉及HDRNet、GAN、轻量化伪影、语义分割网络和Retinex等方法。核心任务是提升图像亮度和细节。方法包括分布映射(如伽马矫正、直方图均衡化)、模型优化(Retinex理论)和深度学习(亮度增强与噪声去除)。传统方法不依赖数据,但可能产生伪影;深度学习方法需大量训练数据,无监督学习更优。不足之处在于缺乏成对数据集和精确标签。
554 1
|
存储 自然语言处理 算法
【编译原理】逆波兰式的产生及计算:C/C++实现
【编译原理】逆波兰式的产生及计算:C/C++实现
322 0
|
XML Java 编译器
Maven下载与安装
一.下载安装 二.系统配置 三.配置maven项目工程 四.创建新项目
504 0
|
7月前
|
机器学习/深度学习 人工智能 数据可视化
基于YOLOv8的AI虫子种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5开发,实现虫子种类识别,支持图片、视频、摄像头等多种输入方式,具备完整训练与部署流程,开箱即用,附带数据集与源码,适合快速搭建高精度昆虫识别系统。
基于YOLOv8的AI虫子种类识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
|
安全 网络协议 网络安全
在实现HTTPS时,有哪些常见的安全协议
在实现HTTPS时,有哪些常见的安全协议
806 1
|
人工智能 运维 测试技术
工作上个的好搭子——通义灵码测评分享
作为一名运维开发工程师,我使用通义灵码的@workspace和@terminal功能,快速熟悉新项目代码并实现新需求。相比之前,提效了约50%。本文分享了我的使用体验和心得,详细介绍了通义灵码如何帮助我在复杂项目中提高开发效率、降低学习成本、提升代码质量和增强团队协作。
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
1956 0
|
关系型数据库 MySQL 数据挖掘
MySQL窗口函数详解(概念+练习+实战)
MySQL窗口函数详解(概念+练习+实战)
2933 2
【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码
【Python的魅力】:利用Pygame实现游戏坦克大战——含完整源码
|
缓存 小程序 前端开发
开题报告--基于SpringBoot的外卖系统
开题报告--基于SpringBoot的外卖系统
499 0

热门文章

最新文章