|
|
|
| Народ, есть задача умножать и делить большие числа
например:
98743927534692857463875648392583477 / 2
|
Это как пример, на самом деле числа длинной в 4 мегабайта
Как решается эта задача самым легким для процессора способом?
p.s: Конечное число должно быть абсолютно точным. | |
|
|
|
|
|
|
|
|
для: ddhvvn
(18.01.2009 в 18:40)
| | А без компиляции PHP можно подключить данный модуль? | |
|
|
|
|
|
|
|
для: solonifer
(18.01.2009 в 18:35)
| | В 23-й задаче вроде как с пятиметровыми числами работали .... Хотя, опять же, смотря что делать...
>Конечное число должно быть абсолютно точным.
Ваш пример предлагает поделить нечетное на два точно? В какой системе счисления?
Собственно, на два не столь показательно, сколь, к примеру, на три. | |
|
|
|
|
|
|
|
для: Trianon
(18.01.2009 в 18:41)
| | Сорри, числа будут без остатка, в примере просто не правильно написал! | |
|
|
|
|
|
|
|
для: SoloNifer
(18.01.2009 в 18:58)
| | В любом случае на быстрое решение можете не рассчитывать | |
|
|
|
|
|
|
|
для: solonifer
(18.01.2009 в 18:35)
| | Я когда-то писал функцию для нахождения остатка от деления очень больших чисел. Может быть вам поможет:
<?
//send a string with large number and get a mod (ex. 7579394085830489503 % $m)
function largeNumberMod($num_str, $m)
{
//num_str is too big for integer and we have to devide it into parts
//algorytm found here: http://www.morfoedro.it/doc.php?n=219&lang=ru
$num_str_parts = str_split($num_str, 5);
foreach($num_str_parts as $nstr)
{
if (isset($atl))
{
$n = $atl.$nstr;
}
else
{
$n = $nstr;
}
$atl = $n % $m;
}
return $atl;
}
?>
|
| |
|
|
|
|
|
|
|
для: Temnovit
(19.01.2009 в 17:03)
| | Что-то у Вас явно не то нарисовано.
71565458580 % 43860 = 17640
Ваша функция выдает 15550 | |
|
|
|
|
|
|
|
для: Temnovit
(19.01.2009 в 17:03)
| | Ваша функция к сожалению не только не подходит под задачу, она вообще не правильно считает. | |
|
|
|