Сложить два целых неотрицательных числа (длинная арифметика)
2 августа 2021
Код на PHP:
<?
/**
* Складывает два целых неотрицательных числа
* @param string $num1 - число 1
* @param string $num2 - число 2
* @return string
*/
function sum_long($num1, $num2)
{
$r = '';
$s_max = $num1;
$s_min = $num2;
if(strlen($num1)<strlen($num2))
{
$s_max = $num2;
$s_min = $num1;
}
$s_max = strrev($s_max);
$s_min = strrev($s_min);
$len_max = strlen($s_max);
$len_min = strlen($s_min);
$add = 0;
for($i=0; $i<$len_max; $i++)
{
$sum = (int)$s_max[$i] + (int)$s_min[$i] + $add;
$a = $sum % 10;
$r = $a.$r;
$add = 0;
if($sum>=10) $add = 1;
if($add>0 && $i+1 == $len_max) $r = '1'.$r;
}
if($r=='') $r = '0';
return $r;
}
$a = sum_long('555555555555555555555555555555555555555555555555', '111');
echo $a; //выведет '555555555555555555555555555555555555555555555666'
?>