Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logarytm dwojkowy
Forum PHP.pl > Forum > Przedszkole
sendi16
w jaki sposob zrealizowac funkcje logarytmu dwojkowego w php'ie??

edit:

poradzilem juz sobie sam jakby ktos potrzebowal to zamieszczam ponizej:

  1. <?php
  2. function log2($liczba)
  3. {
  4.  
  5. $x = 0;
  6.  
  7. while($liczba>1)
  8. {
  9.  
  10. $liczba = $liczba / 2;
  11.  
  12. $x++;
  13.  
  14. }
  15.  
  16. return $x;
  17.  
  18. }
  19. ?>
dr_bonzo
log 2 ( X ) = log y (X) / log y ( X )
w php
  1. <?php
  2. function log2( $flNumber )
  3. {
  4.     return log( $flNumber ) / log( 2 );
  5. }
  6.  
  7. ?>


LOL, nie doczytalem manuala biggrin.gif

Cytat
loat log ( float arg [, float base] )
If the optional base parameter is specified, log() returns logbase arg, otherwise log() returns the natural logarithm of arg.
flashdev
Podepnę się pod temat.

  1. <?php
  2.  
  3. function log2($n){
  4. return log($n)/log(2);
  5. }
  6.  
  7. for( $i = 0; $i < 20; $i++ ){
  8. echo $i . "\t" . ceil(log2($i)) . "\n";
  9. }


Czy ma ktoś sposób na policzenie tego co w drugiej kolumnie, bez żadnych pętli oraz bez dołączania bibliotek matematycznych.
Dla jasności potrzebuję tego rozwiązania do c++.
rzymek01
chodzi Ci o funkcję ceil?
flashdev
Cytat(rzymek01 @ 27.11.2010, 22:19:47 ) *
chodzi Ci o funkcję ceil?


Chciałem zrobić coś takiego jak poniżej, ale wydaje mi się jednak, że nie jest to możliwe bez użycia typu danych float, lub pętli.

  1. function fun($n){
  2. return 1<<ceil(log($n)/log(2));
  3. }
rzymek01
nadal nie do końca rozumiem, ale jesli chodzi o ceil, to mozna to zrobić korzystając tylko i wyłącznie z typu int:
  1. int i = log(n)/log(2) + 0.5;


ale i tak przeciez musisz dołączyć cmath, aby mieć log ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.