И даже трижды, в течении следующего года, реализовывал алгоритм их расчета:
- для ЕС-1035 на Фортране;
- для ДВК-4М на том же Фортране, но другом;
- для IBM PC на Turbo Pascal.
Однако физической сути понять не мог.
А тут наткнулся на ОПЗ:
"Имеется пара новорожденных кроликов (самец и самка), которые, спустя два месяца начинают спариваться.
Каждый месяц они производят новую пару кроликов, отвечающую первичным условиям.
Сколько пар кроликов будет через год, при условии, что все кролики останутся живы?"
Жаль, что нам не предлагали к решению другие его задачи по теории чисел.
В те времена я бы решал их в лоб, грубым перебором. :-)
Я вот тут, кстати, посмотрел как нынешние студенты решают задачу по определению всех чисел в диапазоне от N1 до N2, которые делятся на M без остатка.
Оказывается всё просто: в цикле по i от N1 до N2 делят на M и проверяют остаток.
Вроде бы в современных языках уже и операторов тех нет, но работает.
А я своего преподавателя четверть века назад удивил.
Потому что находил минимальный и максимальный множитель, а потом тупо умножал в цикле по ним на M.
Внезапно выяснилось, что мой алгоритм для больших диапазонов работает в пять раз быстрее.
Но зачет я не получил, потому что, формально, я не проверял числа из диапазона, а формировал набор решений, а это совсем другая задача.