Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> wer 
:(
    Опции темы
NLspieler
Дата 14.2.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Представляю вашему вниманию функцию, умножающую почти любые целые числа, почти любой длинны.

http://blsamler.110mb.com/a_mal_bbb.php?a=...222221111114444

Код

<?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 ;
}

?>


Это сообщение отредактировал(а) NLspieler - 14.2.2009, 17:58
PM MAIL   Вверх
ksnk
Дата 14.2.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



bcmul?

Добавлено через 2 минуты и 16 секунд
В чуланах РНР толпятся слегка покрытые пылью велосипеды...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 14.2.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



gmp
похоже на bc smile
PM MAIL   Вверх
NLspieler
Дата 14.2.2009, 18:19 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Создание своего велосипеда, повышает профессиональный уровень программиста.

bcmul() отлично работает!!!
Есть ли аналогичные функции для сложения, вычитания, деления, извлечения корня, возведения в степень?

PM MAIL   Вверх
ksnk
Дата 14.2.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Ну, там-же в том-же мануале ;-)
Код

Table of Contents

bcadd — Add two arbitrary precision numbers
bccomp — Compare two arbitrary precision numbers
bcdiv — Divide two arbitrary precision numbers
bcmod — Get modulus of an arbitrary precision number
bcmul — Multiply two arbitrary precision number
bcpow — Raise an arbitrary precision number to another
bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
bcscale — Set default scale parameter for all bc math functions
bcsqrt — Get the square root of an arbitrary precision number
bcsub — Subtract one arbitrary precision number from another





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.