Задача Шестеренка

программирование pascal олимпиада

Даны две сцепленные шестеренки. У одной шестеренки N зубцов, у другой – K. Требуется найти, какое минимальное число поворотов на один зубчик требуется сделать, чтобы шестеренки вернулись в исходное состояние.
Ввод: 2 натуральных числа N и K, каждое из которых не превышает 10 миллионов.
Вывод: искомое количество зубчиков. Гарантируется, что оно не более миллиарда.
Примеры:
Если вводится [2 3], то выводится [6].
Если вводится [6,21], то выводится [42].
Если вводится [598 322], то выводится [4186].
Если вводится [598 332], то выводится [99268].

Меня интересует программа этой задачи в Free Pascal с полным её объяснением. По примерам ввода и вывода я понял, что число, которое выводится, нацело делиться на входящие числа. Логично предположить, что это будет связано с делением MOD и DIV, циклами. К сожалению я не обладаю подходящими знаниями, чтобы решить эту задачу своим методом. Именно поэтому я прошу не просто написать мне программу, а с дополнительными пояснениями.

Примечание:
Спасибо всем, разобрался. Все три ответа – лучшие.
Ответы:
Хорошее решение этой задачи - разложить оба числа на простые множители, а затем перемножить наибольшие из степеней множителей. Пример:
2 = 2^1 * 3^0, 3 = 2^0 * 3^1, 2^1 * 3^1 = 6
6 = 2^1 * 3^1 * 7^0, 21 = 2^0 * 3^1 * 7^1,  2^1 * 3^1 * 7^1 = 42;
Хорошая реализация этого решения требует хорошего алгоритма разложения на множители.
var count,i,a,b,n,k : integer;
begin
write('enter nr. n : ');
readln(n);
(это называется наименьшее общее кратное, находится с помощью алгоритма Евклида и гугления)


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.