Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Умножение больших чисел
 
 автор: solonifer   (18.01.2009 в 18:35)   письмо автору
 
 

Народ, есть задача умножать и делить большие числа

например:
98743927534692857463875648392583477  /  2


Это как пример, на самом деле числа длинной в 4 мегабайта

Как решается эта задача самым легким для процессора способом?

p.s: Конечное число должно быть абсолютно точным.

  Ответить  
 
 автор: ddhvvn   (18.01.2009 в 18:40)   письмо автору
 
   для: solonifer   (18.01.2009 в 18:35)
 

http://ru2.php.net/gmp
http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=58833&page=1

  Ответить  
 
 автор: SoloNifer   (21.01.2009 в 15:48)   письмо автору
 
   для: ddhvvn   (18.01.2009 в 18:40)
 

А без компиляции PHP можно подключить данный модуль?

  Ответить  
 
 автор: Trianon   (18.01.2009 в 18:41)   письмо автору
 
   для: solonifer   (18.01.2009 в 18:35)
 

В 23-й задаче вроде как с пятиметровыми числами работали .... Хотя, опять же, смотря что делать...

>Конечное число должно быть абсолютно точным.

Ваш пример предлагает поделить нечетное на два точно? В какой системе счисления?
Собственно, на два не столь показательно, сколь, к примеру, на три.

  Ответить  
 
 автор: SoloNifer   (18.01.2009 в 18:58)   письмо автору
 
   для: Trianon   (18.01.2009 в 18:41)
 

Сорри, числа будут без остатка, в примере просто не правильно написал!

  Ответить  
 
 автор: Trianon   (18.01.2009 в 19:19)   письмо автору
 
   для: SoloNifer   (18.01.2009 в 18:58)
 

В любом случае на быстрое решение можете не рассчитывать

  Ответить  
 
 автор: Temnovit   (19.01.2009 в 17:03)   письмо автору
 
   для: 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_str5);

      foreach(
$num_str_parts as $nstr)
      {
         if (isset(
$atl))
         {
            
$n    $atl.$nstr;
         }
         else
         {
             
$n    $nstr;
         }

         
$atl $n $m;
      }

      return 
$atl;
   }
?>

  Ответить  
 
 автор: Trianon   (19.01.2009 в 19:25)   письмо автору
 
   для: Temnovit   (19.01.2009 в 17:03)
 

Что-то у Вас явно не то нарисовано.
71565458580 % 43860 = 17640
Ваша функция выдает 15550

  Ответить  
 
 автор: SoloNifer   (21.01.2009 в 15:47)   письмо автору
 
   для: Temnovit   (19.01.2009 в 17:03)
 

Ваша функция к сожалению не только не подходит под задачу, она вообще не правильно считает.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования