【欧拉计划第 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,b a,b 的最小公倍数记为 [ a , b ] [a,b] [a,b] ,同样的, a , b , c a,b,c a,b,c 的最小公倍数记为 [ a , b , c ] [a,b,c] [a,b,c] ,多个整数的最小公倍数也有同样的记号
那如何计算最小公倍数呢?
首先,把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)
例如:
最大公约数
最大公约数, a , b a,b a,b 的最大公约数记为 ( a , b ) (a,b) (a,b)
即:短除寻找公因数数,直到找不出公因数,左侧公因数乘积即为最大公约数
最大公约数和最小公倍数的关系
两个数的乘积等于这两个数的最大公约数与最小公倍数的乘积
若有两数 a , b a,b a,b,它们的最大公约数是 p p p,最小公倍数是 q q q
那么
a × b = p × q \large a×b=p×q a×b=p×q
该公式可改写为
a × b = g c d ( a , b ) × q \large a×b=gcd\left (a,b \right)×q a×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)}=q lcm(a,b)=gcd(a,b)ab=q
欧几里得算法
又称辗转相除法,用于计算两个非负整数 a , b a,b a,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
【欧拉计划第 5 题】最小公倍数 Smallest multiple相关推荐
- 欧拉计划 第5题 Smallest multiple
问题 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any r ...
- 【欧拉计划第 13 题】 大数之和 Large sum
Problem 13 Large sum Work out the first ten digits of the sum of the following one-hundred 505050-di ...
- 详解欧拉计划第395题:毕达哥拉斯树
本题难度系数为40%(最易5%,最难100%). 毕达哥拉斯树是按如下步骤生成的分形图形: 从一个单位正方形开始,以其中一条边为基底(在图示中,单位正方形下放的边作为基底),给基底所对的边粘连上一个三 ...
- 欧拉计划:第53题 Combinatoric selections
欧拉计划:第53题 Combinatoric selections 无意中知道有这个用编程解决数学题的网站,个人对数学又比较感兴趣,所以打算做个欧拉计划系列,将自己的一些见解分享给大家,第一次写文章, ...
- 欧拉计划(project euler)最详细中文题解
欧拉计划是一个在线解题网站,题目以各类数学问题为主,通常需要结合一定的数学与编程知识,写出适当的程序求解问题(详细介绍可以参见我的文章).相比于力扣等刷题网站,欧拉计划上的题目有着更丰富的知识背景,在 ...
- 欧拉计划 Project Euler 50-56
Project Euler 50-56 Project Euler: https://projecteuler.net/ Project Euler | 欧拉计划: https://pe-cn.git ...
- 欧拉计划 P429 (数论)
欧拉计划 P429 Sum of squares of unitary divisors(数论) 传送门:https://projecteuler.net/problem=429 题目大意: 定义一个 ...
- 欧拉计划(鱼C论坛)@20161107
1.10以下的自然数中,属于3或5的倍数的数字有3,5,6,9,它们之和为23找出1000以下的自然数中,属于3或5倍数的所有数字之和. """ 欧拉计划 10以下的自然 ...
- python求直角三角形个数的公式_Python3 欧拉计划 问题71-75
EulerProject.png 问题66-70参见:https://www.jianshu.com/p/d0fad6213433 71.有序分数 考虑形如n/d的分数,其中n和d均为正整数.如果n ...
最新文章
- java basic认证_Basic认证
- 如何防止无线网络被破解
- jpa动态扩展sql_扩展您的JPA POJO
- 云网一体,“湘遇湘融 | 移动云TeaTalk·长沙站 启动倒计时
- python -- lambda表达式
- 设计模式学习笔记——中介者(Mediator)模式
- 3D打印文件格式:STL、OBJ、AMF、3MF
- 极大似然估计的通俗理解
- html空格符的代码用转义字符怎么表示,html空格符号标签 空格符号怎么打出来HTML?...
- 系统完全优化 全面剖析XP
- 图像Scaler缩放因子
- php 上传微信客服头像,微信多客服上传头像
- IP地址和物理地址的区别和联系
- 三十八、西梁女儿国疑案之一落胎泉的秘密
- 学生台灯哪个品牌的专业?盘点小学生台灯品牌排行榜
- TCP选项之SACK选项概述
- matlab 矩阵分解
- 东师理想资源(可扩展为试题、试卷、微课、备课、作业、精品等其它业务)升级方案...
- lombok基本使用
- 易帅和夺帅,盛大与骏网
热门文章
- Mac 移动硬盘无法装载
- 高仙技术家|SLAM(二)——完善回环检测的视觉SLAM
- 分析比较国内几大OTA(Online Travel Agency)的优劣势
- 经纬财富:乌海黄金白银暂缓跌势
- 夏敏捷第28本著作《Flash ActionScript3.0动画基础与游戏设计》(Flash CC版)
- 明天帮人拍照---婚礼摄影备课[zt]
- 【在线可测】通用中文点选验证码识别
- ipad已有2周未备份。ipad插入电源、被锁定且接入Wi-Fi时会进行备份
- 物联网开发笔记(64)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:控件显示
- MCUXpresso开发RT1060(1)——使用RGB接口LCD