Я больше не могу получить доступ к решению (может быть, ссылка не работает?), Но вот что я хотел бы сделать: моя программа работала бы как пирамида.В самой нижней строке у меня будет массив с заданными числами.В каждой строке выше у меня был бы массив с одним полем меньше, чем массив ниже.Он будет хранить LCM двух значений из массива ниже.
[ 30 ]
[ 15, 30 ]
[3, 5, 6]
Таким образом, вы можете работать с рекурсивной функцией, и вам придется строить слои M-1 пирамиды.Вот реализация псевдокода:
rekursivePyramid (Integer[] numbers, Integer height) {
if (height == 0) return numbers;
else {
newNumbers = Integer[numbers.size() - 1];
for (i=0; i<newNumbers.size(); i++) {
newNumbers[i] = LCM ( numbers[i], numbers[i+1]);
}
return rekursivePyramid( newNumbers, height-1);
}
}
Это даст вам массив, где вы найдете LCM первых M чисел в первом поле, LCM от второго до M + 1-го числа ввторое поле и т. д.