"; var_dump($a); echo ""; var_dump($b); echo ""; return findRestWithD($b, $a % $b); } else { return $b; } } function findRestWithoutD($a, $b){ if(insteadD($a, $b)==1){ return "No NOD"; }elseif(insteadD($a, $b)!=0){ echo ""; var_dump($a); echo ""; var_dump($b); echo ""; return findRestWithoutD($b, insteadD($a, $b)); } else{ return $b; } } function findRestWithGMP($a, $b){ $r=gmp_mod($a, $b); if(gmp_cmp($r,1)==0){ return "No NOD"; } elseif (gmp_cmp($r,0)!=0){ echo ""; echo gmp_strval($a); echo ""; echo gmp_strval($b); echo ""; return findRestWithGMP($b, $r); } else { return $b; } } function insteadD($a, $b){ if( ($a - $b)>$b ){ return insteadD(($a - $b), $b); }else{ return $a - $b; } } $a = 25234234232346; $b = 12342342322; //$a=567890352; //$b=46688; echo "
"; echo ""; $start = microtime(true); echo findRestWithD($a, $b); echo "
"; echo "\n".'Время: '.(microtime(true) - $start).' сек.'; echo "
"; $a1=gmp_init("25234234232346"); $b1=gmp_init("12342342322"); $start = microtime(true); echo gmp_strval(findRestWithGMP($a1, $b1)); echo "
"; echo "\n".'Время: '.(microtime(true) - $start).' сек.'; echo "
"; $start = microtime(true); echo findRestWithoutD($a, $b); echo "
"; echo "\n".'Время: '.(microtime(true) - $start).' сек.'; echo "
"; ?>