Если числа не являются действительно маленькими, алгоритм Евклида, скорее всего, будет на лот быстрее. Это линейно по размеру числа (с двумя делениями на итерацию, и деления являются одним из самых медленных типов команд). Евклида на самом деле довольно нетривиально для анализа - у Кнута V2 есть несколько страниц, но суть в том, что он, как правило, немного быстрее.
Если вы хотите использовать вариант того, который вы используете сейчас, я бы начал с i
, равного меньшему из двух входов, и продолжил бы вниз . Таким образом, впервые раз вы найдете общий фактор, у вас есть свой ответ, чтобы вы могли выйти из цикла.