JAVA – Wyszukiwanie NWD

Poniżej dwa przykłady funkcji opartych na algorytmie Euklidesa do wyszukiwania największego wspólnego dzielnika dwóch liczb:

 
package NWD;
 
public class Main {
 
  /* NWD - program wyznacający największy wspólny dzielnik dwóch liczb
   * podanych jako parametry funkcji - algorytm Euklidesa
   */
 
    /*
     * pierwsza wersja funkcji, w której zastosowano wielokrotne odejmowanie
     * dwóch liczb
     */
    public static int NWD_1(int pierwsza, int druga)
    {
        while (pierwsza != druga) // dopóki dwie liczby nie są sobie równe
        {
            if (pierwsza > druga)  // sprawdzamy, która z nich jest większa
            {
                pierwsza = pierwsza - druga; // odejmujemy mniejszą liczbę
            }                               // od większej
            else
            {
                druga = druga - pierwsza;
            }
        }
        return pierwsza; 
    }
 
    /*
     * druga wersja algorytmu Euklidesa, w której zastosowano rekurencję
     * oraz operację modulo dwóch lich
     */
    public static int NWD_2(int pierwsza, int druga)
    {
        if (druga == 0) 
        {
            return pierwsza;  
        }
        else // rekurencyjne wywołanie funkcji, gdzie kolejność parametrów 
        {   // została zamieniona, dodatkowo drugi parametr to operacja modulo
            return NWD_2(druga, pierwsza%druga);  // dwóch liczb.
        }
    }
 
 
    public static void main(String[] args) 
    {
       System.out.println(NWD_1(130,20)); // przykład zastosowania podejścia 1
       System.out.println(NWD_2(130,20));  // oraz 2      
    }
}

Post a Comment

Your email is kept private. Required fields are marked *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>