Как заменить деление сложением или вычитанием?

Discussion in 'PHP' started by zip1990, 30 Nov 2008.

  1. zip1990

    zip1990 Elder - Старейшина

    Joined:
    30 Sep 2008
    Messages:
    50
    Likes Received:
    5
    Reputations:
    -5
    Как заменить деление сложением или вычитанием? Помниться был там простенький алгоритм. Помогиме вспомнить
     
  2. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Если правильно тебя понял

    PHP:
    eval('echo 14+14;');
    echo 
    '<br>';
    eval(
    'echo 14-5    ;');
    echo 
    '<br>';
    eval(
    'echo 14/5    ;');
    echo 
    '<br>';
    eval(
    'echo 14*5    ;');
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    http://forum.sources.ru/index.php?act=ST&f=43&t=102840
     
  4. zip1990

    zip1990 Elder - Старейшина

    Joined:
    30 Sep 2008
    Messages:
    50
    Likes Received:
    5
    Reputations:
    -5
    а если не исмпользовать умножение?
     
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    http://php.ru/manual/function.gmp-div-q.html

    PHP:
    <?php
    $div1 
    gmp_div_q("100""5");
    echo 
    gmp_strval($div1) . "\n";

    $div2 gmp_div_q("1""3");
    echo 
    gmp_strval($div2) . "\n";

    $div3 gmp_div_q("1""3"GMP_ROUND_PLUSINF);
    echo 
    gmp_strval($div3) . "\n";

    $div4 gmp_div_q("-1""4"GMP_ROUND_PLUSINF);
    echo 
    gmp_strval($div4) . "\n";

    $div5 gmp_div_q("-1""4"GMP_ROUND_MINUSINF);
    echo 
    gmp_strval($div5) . "\n";
    ?> 
    Выведет:
    20
    0
    1
    0
    1
     
  6. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    PHP:
    <?php
    function mult($a,$b)
    {
         for(
    $i=0;$i<$b;$i++) $res+=$a;
         return 
    $res;
    }
    ?>
     
    6 people like this.
  7. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    echo mult(100,20);
    2000:)

    PHP:
    <?
    function 
    mult($a,$b)
    {
         for(
    $i=1;$i<=$a;$i++)  
        { 
        
    $c=$c+$b;
        
    $buff=$a-$c;
        if (
    $buff<=0) {echo $i; break;}
        }
    }

    mult(100,4);
    ?>
    Правда верно только для целочисленного деления
     
    #7 Pashkela, 30 Nov 2008
    Last edited: 30 Nov 2008
  8. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Будущии ядерные физики России собрались.
    PHP:
    <?php  

    echo del(100,2);

    function 
    del($delimoe,$delitel)
    {
      while(
    $delimoe != 0)
      {
        
    $delimoe -= $delitel;
        
    $chastnoe++;
      }
      return 
    $chastnoe;
    }

    ?>
     
  9. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Чтобы заменить деление на другие операции надо перевести всё в двоичную систему. Деление в двоичной системе сводится к другим простым операциям.
     
  10. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Покажи деление, к примеру, на 5 плз в простых операциях в двоичной системе.
     
  11. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    гы, ув. Эйнштейн, а сделайте на вашем примере

    echo del(100,3);

    ))))

    Неплохой буфероверфлоу такой у вас получился:)
     
    #11 Pashkela, 30 Nov 2008
    Last edited: 30 Nov 2008
  12. PHPoozy

    PHPoozy Elder - Старейшина

    Joined:
    1 Jul 2008
    Messages:
    149
    Likes Received:
    31
    Reputations:
    -22
    Code:
    <?php   
    
    echo del(100,2); 
    
    function del($delimoe,$delitel) 
    { 
      while($delimoe >= 0) 
      { 
        $delimoe -= $delitel; 
        $chastnoe++; 
      } 
      return $chastnoe; 
    } 
    
    ?
    
     
  13. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    и чем этот код лучше моего?:)
     
  14. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Тем что твой не работает и сваливается в бесконечный цикл, если делится с остатком. :)
     
  15. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    мой? Вы уверены?
     
  16. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Зачем?
     
  17. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Ой, прошу прощения, ошибся ником.
     
  18. zip1990

    zip1990 Elder - Старейшина

    Joined:
    30 Sep 2008
    Messages:
    50
    Likes Received:
    5
    Reputations:
    -5
    да так надо
     
  19. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Вообщем, переделал, прекрасно делит int на Int без остатка.

    Это стандартный алгоритм по замене деления - вычитанием.

    PHP:
    <?php 

    echo del(100,2); //50
    echo del(100,3); //33

    function del($delimoe,$delitel)
    {
      while(
    $delimoe >= $delitel)
      {
        
    $chastnoe++;
        
    $delimoe -= $delitel;   
      }
      return 
    $chastnoe;
    }

    ?>
    Делимое и частное, должны быть int. Соответственно и результат будет int без остатка. Над алгоритмом с остатком - не задумывался.

    Pashkela, ув. идите на http://php.ru/manual/function.gmp-div-q.html . Как сами и сказали.
     
  20. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    А для чего это применяется?