Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: najwiekszy wspolny dzielnik - nwd
Forum PHP.pl > Forum > Przedszkole
marek18
Witam, mam zadanie na informatyke, musze napisac cos zeby mi obliczalo NWD. Znalazlem cos takiego:

  1. <?php
  2. function gcdp($a, $b) { // funkcja pomocnicza
  3.  if ($b == 0) {
  4. return $a;
  5.  } else {
  6. return gcdp($b, $a % $b);
  7.  } 
  8. }
  9.  
  10. function gcd($list) { // główna funkcja
  11.  sort($list);
  12.  $g = $list[0];
  13.  for ($i = 0; $i < count($list)-1; $i++) {
  14. $g = gcdp($g, $list[$i]);
  15.  }
  16.  return $g;
  17. }
  18. ?>


Niestety niebardzo wiem z której strony to ugryzc, bo w php jestem zielony. Moglby mi ktos napisac za co jest odpowiedzialna poszczegolna linijka kodu? W kursach owszem, moze i jest to napisane, ale trzeba by bylo sie przebrnac w nich przez tony tekstu ktoru mnie nie interesuje, a na to czasu niestety nie mam.


~mike_mech
strife
Witam, wymyśliłem coś takiego, ale wiem że to nie działa tak jak powinno, trzeba nanieść poprawki. Mam nadzieję że pomoże.
  1. <?php
  2.  
  3. function nwd( $a, $b )
  4. {
  5.  
  6. /**
  7.    * Wybieramy najwieksza liczbe
  8.    */
  9.  
  10.  $max = ( $a > $b ) ? $a : $b;
  11.  $min = ( $a < $b ) ? $a : $b;
  12.  
  13.  $nwd = TRUE;
  14.  
  15.  while ( $nwd > 0 )
  16.  {
  17.  
  18.  $max -= $min; 
  19. echo $max . ' - ' . $min . '<br />'; 
  20.  if ( $max == $min ) break;
  21.  
  22.  $min -= $max; 
  23. echo $min . ' - ' . $max . '<br />'; 
  24.  if ( $max == $min ) break;
  25.  
  26.  $nwd = $min;
  27.  
  28.  }
  29.  
  30.  return $nwd;
  31.  
  32. }
  33.  
  34. $a = 18;
  35. $b = 30;
  36. echo 'Najwiekszy wspolny dzielnik liczb ' . $a . ' i ' . $b . ' wynosi ' . nwd( $a, $b );
  37.  
  38.  
  39. ?>


Pozdrawiam!
dtb
prosta funkcja, a tak kombinujecie:

  1. <?php
  2. function nwd ($a, $b)
  3. {
  4. while (!= 0)
  5. {
  6. $c = $a % $b;
  7. $a = $b;
  8. $b = $c;
  9. }
  10. return $a;
  11. }
  12. ?>
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.