本题来自 Project Euler 第5题:https://projecteuler.net/problem=5

# Project Euler: 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?
# Answer: 232792560 # 求解2个数字的最大公约数 f(x,y)
def f(x,y):
t = 1
for i in range(1,min(x,y)+1):
if x%i == 0 and y%i ==0:
t = max(t, i)
return t m = 1
for i in range(1,21):
#两个数字相乘,再除以其最大公约数,可得最小公倍数
m = (m * i) // f(m, i)
print(m)

为了这题,我这数学渣真是想破了脑袋也没想出算法。后来只好借助网络手段,在 “Python实现Project Euler 5” 中了解到,原来求解 a,b 两个数字的最小公倍数,可以把 a,b 相乘,然后除以这两个数字的小大公约数。虽然算法有了,但作者写的代码俺实在看不懂(啥“辗转相除法”,唉……),只好照着描述的算法,写出了上面的代码(相比之下,我的代码繁复很多啊):

先定义函数 f(x,y),用来求解任意两个数字的最大公约数。思路是:先比校 x,y 得出更小的数字,然后从1到这个更小的数字,逐一拿来跟 x 和 y 除,如果都能整除,则表示是公约数,取最大的公约数即可。

之后就简单了,从 1 开始,两个两个地计算最小公倍数,结果再与下一个数字一起计算最小公倍数,算到 20 就能得出答案了。

---------------------

P.S.:最初的想法是,找到 1-20 之间的所有质数,相乘。后来发现乘完之后的数字根本无法被 20 整除。之后又试了好多办法,都不管用,我的数学真是没救了……

有谁能看懂 “Python实现Project Euler 5” 这篇文章里的代码的,求解释!

Python练习题 033:Project Euler 005:最小公倍数的更多相关文章

  1. Python练习题 032:Project Euler 004:最大的回文积

    本题来自 Project Euler 第4题:https://projecteuler.net/problem=4 # Project Euler: Problem 4: Largest palind ...

  2. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  3. Python练习题 046:Project Euler 019:每月1日是星期天

    本题来自 Project Euler 第19题:https://projecteuler.net/problem=19 ''' How many Sundays fell on the first o ...

  4. Python练习题 039:Project Euler 011:网格中4个数字的最大乘积

    本题来自 Project Euler 第11题:https://projecteuler.net/problem=11 # Project Euler: Problem 10: Largest pro ...

  5. Python练习题 049:Project Euler 022:姓名分值

    本题来自 Project Euler 第22题:https://projecteuler.net/problem=22 ''' Project Euler: Problem 22: Names sco ...

  6. Python练习题 048:Project Euler 021:10000以内所有亲和数之和

    本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable ...

  7. Python练习题 047:Project Euler 020:阶乘结果各数字之和

    本题来自 Project Euler 第20题:https://projecteuler.net/problem=20 ''' Project Euler: Problem 20: Factorial ...

  8. Python练习题 045:Project Euler 017:数字英文表达的字符数累加

    本题来自 Project Euler 第17题:https://projecteuler.net/problem=17 ''' Project Euler 17: Number letter coun ...

  9. Python练习题 044:Project Euler 016:乘方结果各个数值之和

    本题来自 Project Euler 第16题:https://projecteuler.net/problem=16 ''' Project Euler 16: Power digit sum 2* ...

随机推荐

  1. UnitTest框架的快速构建与运行

    我们先来简单介绍一下unittest框架,先上代码: 1.建立结构的文件夹: 注意,上面的文件夹都是package,也就是说你在new新建文件夹的时候不要选directory,而是要选package: ...

  2. VS2015+opencv3.1.0 imshow()函数出现中文乱码----问题一

    Visual Studio提供高级保存选项功能,它能指定特定代码文件的编码规范和行尾所使用的换行符.在Visual Studio 2015中,该命令没有默认显示在“文件”菜单中.用户需要手工设置,才能 ...

  3. React State

    React 里只需要更新组件的state,然后根据新的 state 重新徐娜然用户界面(不要操作DOM). class Clock extends React.Component { construc ...

  4. 【Android】Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...

  5. Android项目智能机器人的实现,带有源代码,图灵智能机器人,详细讲解。。

    大家好,今天给大家推荐一个我利用图灵api制作的android项目,智能机器人,类似智能小冰,等一些会机器人. 下面看效果.女头像是系统自动给你回复的,男头像是你输入的内容.项目源代码是eclipse ...

  6. 基于Celery在多台云服务器上实现分布式

    起源 最近参加公司里的一个比赛,比赛内容里有一项是尽量使用分布式实现项目.因为项目最终会跑在jetsonnano,一个贼卡的开发板,性能及其垃圾.而且要求使用python? 找了很多博客,讲的真的是模 ...

  7. 10.redis cluster介绍与gossip协议

    一.redis cluster 介绍 自动将数据进行分片,每个 master 上放一部分数据 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的 redis cluster架构下的 ...

  8. Salesforce LWC学习(二十四) Array.sort 浅谈

    本篇参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sal ...

  9. 单线程模式从网易下载A股叁仟捌佰支股票一年的交易数据耗时十四分钟

    代码下载:https://files.cnblogs.com/files/xiandedanteng/StockDataDownloader20200305.rar 压缩包内包含股票代号文件,调整好日 ...

  10. 装个Mysql怎么就这么难?

    2020/5/20 程序员是没有女朋友的~~ 声明:这篇文章是我第一次安装MySQL,主要记录了安装的艰辛过程,内容很凌乱,不适合作为参考. CentOS 6.10安装MySQL一直出问题,换了各种不 ...