在“伟大的数学问题 - 无限远景”,第18页Ian Stewart提到了Euclid的命题2,Element VII的命题7,它是寻找最大公约数的一个非常基本的方法。我引用“它的工作原理是反复从较大的数字中减去较小的数字,然后对所得的余数和较小的数字应用类似的处理,并继续直到没有余数。”这个例子是630和135. 135从630(495,360,225)中被“减去”,最后得到90,它小于135.所以数字反转,并且从135中重复减去90,最后得到45然后从90中减去45,最后得到0得到45的gcd。这有时被称为寻找gcd的欧几里德算法。python中的欧几里德算法(减法)
要教一个初学者(10岁的孩子)我需要在python中编写代码。不应该有任何函数定义,也不应该使用除减法之外的任何其他数学运算。我想用if/while/else/elif/continue/break。应该规定,如果给出三个(或更多)数字,整个程序必须重复决定较小的一个。 从这个角度来看,gcd上的早期链并不看这个算法。
我相信在Python中有成千上万的(扩展)欧几里得算法的实现。你检查了哪些?他们有什么问题? –
好吧,'gcd'(以及'sin','cos','max','min'等)应该可能是一个函数。在数学中你写'gcd(1,3,5)',这只是一个函数调用。 – ForceBru
我提到了我对算法的具体要求 - 不管是什么名字。我坚持它是因为教学原因。我发现没有人遇到它。那些围绕第一段提到的“分裂”而不是“减法”的问题。如果有任何参考可以提出,我会很高兴 - Andrea Corbelini – Biplab