PHP Функция Эйлера - реализация с факторизацией - пример кода

Реализована (фактически переписана на php+gmp) как копия этого алгоритма:

function Euler_quick_gmp_function($n) 
		{
			$result = gmp_init($n);
			$n = gmp_init($n);
			$i = gmp_init('2'); // начальное значение
			$zero = gmp_init('0'); // просто ноль
			$one = gmp_init('1'); // просто единица
			while (gmp_cmp(gmp_mul($i,$i),$n) <= 0)
			{
				if (gmp_cmp(gmp_div_r($n, $i), $zero) == 0) {
					while (gmp_cmp(gmp_div_r($n, $i), $zero)== 0) {
						$n = gmp_div_q($n, $i);
					}
					$result = gmp_sub($result, gmp_div_q($result, $i));
				}
				$i = gmp_add($i,'1');
			}
			if (gmp_cmp($n, $one) > 0)
				$result = gmp_sub($result, gmp_div_q($result, $n));
			
			echo '<br>Результат "быстрой" функции Эйлера = '.gmp_strval($result);
			return gmp_strval($result);
		}


"лобовое" решение приведено здесь