Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как заменить деление сложением или вычитанием? (https://forum.antichat.xyz/showthread.php?t=94177)

zip1990 30.11.2008 12:30

Как заменить деление сложением или вычитанием?
 
Как заменить деление сложением или вычитанием? Помниться был там простенький алгоритм. Помогиме вспомнить

DIAgen 30.11.2008 12:39

Если правильно тебя понял

PHP код:

eval('echo 14+14;');
echo 
'<br>';
eval(
'echo 14-5    ;');
echo 
'<br>';
eval(
'echo 14/5    ;');
echo 
'<br>';
eval(
'echo 14*5    ;'); 


Pashkela 30.11.2008 12:40

http://forum.sources.ru/index.php?act=ST&f=43&t=102840

zip1990 30.11.2008 12:44

а если не исмпользовать умножение?

Pashkela 30.11.2008 12:58

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

scrat 30.11.2008 13:05

PHP код:

<?php
function mult($a,$b)
{
     for(
$i=0;$i<$b;$i++) $res+=$a;
     return 
$res;
}
?>


Pashkela 30.11.2008 13:10

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

Правда верно только для целочисленного деления

Solker 30.11.2008 16:26

Будущии ядерные физики России собрались.
PHP код:

<?php  

echo del(100,2);

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

?>


inlanger 30.11.2008 17:06

Чтобы заменить деление на другие операции надо перевести всё в двоичную систему. Деление в двоичной системе сводится к другим простым операциям.

Qwazar 30.11.2008 17:19

Цитата:

Сообщение от inlanger
Чтобы заменить деление на другие операции надо перевести всё в двоичную систему. Деление в двоичной системе сводится к другим простым операциям.

Покажи деление, к примеру, на 5 плз в простых операциях в двоичной системе.

Pashkela 30.11.2008 17:21

Цитата:

Сообщение от Solker
Будущии ядерные физики России собрались.
PHP код:

<?php  

echo del(100,2);

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

?>


гы, ув. Эйнштейн, а сделайте на вашем примере

echo del(100,3);

))))

Неплохой буфероверфлоу такой у вас получился:)

PHPoozy 30.11.2008 17:30

Код:

<?php 

echo del(100,2);

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

?


Pashkela 30.11.2008 17:32

и чем этот код лучше моего?:)

Qwazar 30.11.2008 17:35

Цитата:

Сообщение от Pashkela
и чем этот код лучше моего?:)

Тем что твой не работает и сваливается в бесконечный цикл, если делится с остатком. :)

Pashkela 30.11.2008 17:44

мой? Вы уверены?

astrologer 30.11.2008 17:47

Цитата:

Сообщение от zip1990
Как заменить деление сложением или вычитанием? Помниться был там простенький алгоритм. Помогиме вспомнить

Зачем?

Qwazar 30.11.2008 17:48

Цитата:

Сообщение от Pashkela
мой? Вы уверены?

Ой, прошу прощения, ошибся ником.

zip1990 30.11.2008 18:20

да так надо

Solker 30.11.2008 20:24

Вообщем, переделал, прекрасно делит 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 . Как сами и сказали.

rcc0023 02.12.2008 01:12

А для чего это применяется?

Pashkela 02.12.2008 01:23

http://www.npk.ru/articles/article.html?id=23_7

почитай, познавательно


Время: 07:36