Представляю вашему вниманию функцию, умножающую почти любые целые числа, почти любой длинны.
http://blsamler.110mb.com/a_mal_bbb.php?a=3119999999999991111111155555555111114&b=4511111111111111555555555555551111112222222222221111114444
| Код | <?php function a_mal_b ($a, $b) { $a = (string) $a ; $b = (string) $b ; $size = strlen ($a) ; for ($n = 0; $n < $size; $n++) { $key = $size - 1 - $n ; $antwort[$n] = a_mal_bbb($a[$key], $b, $n) ; } $size = count ($antwort) ; for ($n = 0, $return = 0; $n < $size; $n++) { $return = plus ($return , $antwort[$n] ) ; } return $return ; }
function a_mal_bbb ($a, $bbb, $nullen=0) { $return = '' ; for ($n = 1 ; $n <= $nullen; $n++) { $return = $return . '0' ; }
$size = strlen ($bbb) ; for ($n = 0; $n < $size; $n++) { $key = $size - 1 - $n ; $antwort[$n] = $bbb[$key] * $a ; } $a_size = count ($antwort) ; for ($n = 0; $n < $a_size; $n++) { $n_next = $n + 1 ; $otwet = floor ($antwort[$n] / 10) ;
if ($otwet != 0) { $antwort[$n_next] = $antwort[$n_next] + $otwet ; $antwort[$n] = $antwort[$n] - (10 * $otwet) ; } } $b_size = count ($antwort) ; for ($n = 0; $n < $b_size; $n++) { $return = $antwort[$n] . $return ; } return $return; }
function plus ($a, $b) { $a = (string) $a ; $b = (string) $b ; $a = back ($a) ; $b = back ($b) ; $max_size = max ( strlen($a), strlen($b) ) ; $return = '' ; $ym = 0 ; for ($n = 0; $n <= $max_size; $n++) { $antwort = $a[$n] + $b[$n] + $ym ; $ym = 0; if ($antwort > 9) { $antwort = $antwort - 10; $ym = 1 ; } $return = $antwort . $return ; } return $return ; }
function back ($str) { $size = strlen ($str) ; $return = ''; for ($n = 0; $n < $size; $n++) { $return = $str[$n] . $return ; } return $return ; }
?>
|
|