Сегодня я прочитал интересный пост DailyWTF, "Из всех возможных ответов..." , и он заинтересовал меня достаточно, чтобы выкопать исходный сообщение форума, где он был отправлен. Это заставило меня подумать, как я разрешу эту интересную проблему - исходный вопрос задается на Project Euler как:
2520 - наименьшее число, которое можно разделить на каждый из номера от 1 до 10 без остатка.
Какое наименьшее число, которое равномерно делится на все числа от 1 до 20?
Чтобы реформировать это как вопрос программирования, , как бы вы создали функцию, которая может найти наименьшее общее число для произвольного списка чисел?
Я невероятно плох с чистой математикой, несмотря на мой интерес к программированию, но я смог решить это после небольшого Googling и некоторых экспериментов. Мне любопытно, какие другие подходы могут использовать пользователи SO. Если вы так склонны, отправьте код ниже, надеюсь, вместе с объяснением. Обратите внимание, что, хотя я уверен, что библиотеки существуют для вычисления GCD и LCM на разных языках, меня больше интересует то, что отображает логику больше, чем вызов библиотечной функции:-)
Я больше всего знаком с Python, C, С++ и Perl, но любой язык, который вы предпочитаете, приветствуется. Бонусные баллы для объяснения логики для других людей с математической точки зрения, таких как я.
РЕДАКТИРОВАТЬ: после отправки я нашел этот похожий вопрос Наименее распространенный для 3 или более номеров, но на него был дан ответ с тем же основным код, который я уже выяснил, и нет никаких реальных объяснений, поэтому я чувствовал, что это было совсем другое, чтобы оставить открытым.