PHP Функция Эйлера - с поиском НОД средствами GMP

Куда более быстрый код с аналогичным результатом здесь.

Данное же решение таково:

/* $n - целое число в виде строки
	  так как в данной реализации функции Эйлера 
	  мы будем использовать gmp, то это число может 
	  быть сколь угодно большим*/
	function Euler_gmp_function($n) 
	{
		$rez = '0'; // число взаимно простых чисел
		$i =  gmp_init(1);
		$fin = gmp_sub ($n, '1');
		echo "<br> ".gmp_strval($fin)." <br>";
		$one = gmp_init(1); // если использовать текстовую едницу - возможна утечка памяти 
		while (gmp_cmp($i, $fin) <= 0)
		{
			  //echo "<br> ".gmp_strval($i)." <br>";
			// $nod['g'] = '1';
			 $nod = gmp_gcdext($n,$i); // вычисляем НОД ($nod['g']) (и ещё пару значений)
			 if (gmp_cmp($nod['g'], $one) == 0) // вычисленный НОД и сравниваем с единицей
			 {
				$rez = gmp_add($rez, '1'); // наращиваем счётчик
			// echo "<br> zkzkzkkz <br>";
			 }			 
			 $i = gmp_add($i, '1');
		}
		/* мы потеряем в скорости рассчитывая 
		$rez в стиле gmp = но кто его знает -
		какие числа будут у вас))))*/
		echo '<br>Результат функции Эйлера = '.gmp_strval($rez);
		return gmp_strval($rez); // возвращаем резульат в виде строки
	}