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