В «Великих математических проблемах - Видение бесконечности», стр. 18 Иан Стюарт ссылался на предложение Евклида 2, Книга VII элемента, которая является очень элементарным методом нахождения Величайшего общего делителя. Я цитирую: «Он работает путем многократного вычитания меньшего числа из большего, затем применяя аналогичный процесс к полученному остатку и меньшему числу и продолжая, пока не останется никакого остатка». Например, с 630 и 135. 135 повторяется «вычитается» с 630 (495, 360, 225) и, наконец, получается 90, что меньше 135. Таким образом, числа инвертируются и 90 многократно вычитаются из 135, чтобы, наконец, 45 Затем 45 вычитают из 90 и, наконец, получают 0, получая 45 gcd. Это иногда называют евклидовым алгоритмом поиска gcd.Евклидова алгоритм (вычитание) в питоне
Чтобы научить новичка (ребенок 10 лет), мне нужно написать код в python. Не должно быть никакого определения функции, ни он не должен использовать какую-либо другую математическую операцию, кроме вычитания. Я хочу использовать if/while/else/elif/continue/break. Должно быть предусмотрено, что если заданы три числа (или больше), вся программа должна быть повторена, чтобы определить меньшую. Ранняя цепочка на gcd не смотрит алгоритм с этой точки зрения.
Я считаю, что существует тысячи реализаций (расширенного) евклидова алгоритма в Python. Какие из них вы проверили? Что с ними случилось? –
Ну, 'gcd' (а также' sin', 'cos',' max', 'min' и т. Д.) _should_, вероятно, будет функцией. В математике вы пишете 'gcd (1,3,5)', что является просто вызовом функции. – ForceBru
Я упомянул о своих конкретных требованиях к алгоритму - каким бы ни было его название. Я придерживаюсь этого по педагогическим причинам. Я не нашел никого, кто бы это понял. Те, которые доступны вокруг «деления», а не «вычитания», как упоминалось в первом абзаце. Буду рад, если можно будет сделать какие-либо ссылки - Andrea Corbelini – Biplab