Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> najwiekszy wspolny dzielnik - nwd
marek18
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 19.11.2005

Ostrzeżenie: (0%)
-----


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.

(IMG:http://forum.php.pl/uwaga.gif)
~mike_mech
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
dtb
post
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 03:53