W tym programie nauczysz się znajdować GCD dwóch liczb w Kotlinie. Odbywa się to za pomocą pętli while z pomocą instrukcji if else.
Wartość HCF lub GCD dwóch liczb całkowitych jest największą liczbą całkowitą, która może dokładnie podzielić obie liczby (bez reszty).
Przykład 1: Znajdź GCD dwóch liczb za pomocą pętli while
fun main(args: Array) ( val n1 = 81 val n2 = 153 var gcd = 1 var i = 1 while (i <= n1 && i <= n2) ( // Checks if i is factor of both integers if (n1 % i == 0 && n2 % i == 0) gcd = i ++i ) println("G.C.D of $n1 and $n2 is $gcd") )
Po uruchomieniu programu wynik będzie następujący:
GCD 81 i 153 to 9
Tutaj dwie liczby, których GCD mają zostać znalezione, są przechowywane odpowiednio w n1 i n2.
Następnie wykonywana jest pętla while do momentu, gdy i jest mniejsze niż n1 i n2. W ten sposób wszystkie liczby od 1 do najmniejszej z dwóch liczb są powtarzane, aby znaleźć GCD.
Jeśli zarówno n1, jak i n2 są podzielne przez i, gcd jest ustawiane na liczbę. Trwa to aż do znalezienia największej liczby (GCD), która dzieli zarówno n1, jak i n2 bez reszty.
W przeciwieństwie do języka Java nie można użyć pętli for z warunkami opisującymi ten problem. Oto odpowiednik kodu w Javie: Program Java do znajdowania GCD dwóch liczb.
Istnieje lepsza alternatywa dla znalezienia GCD w Kotlinie w następujący sposób:
Przykład 2: Znajdź GCD dwóch liczb (lepsza alternatywa)
fun main(args: Array) ( var n1 = 81 var n2 = 153 while (n1 != n2) ( if (n1> n2) n1 -= n2 else n2 -= n1 ) println("G.C.D = $n1") )
Po uruchomieniu programu wynik będzie następujący:
GCD = 9
To lepszy sposób na znalezienie GCD. W tej metodzie mniejsza liczba całkowita jest odejmowana od większej liczby całkowitej, a wynik jest przypisywany zmiennej zawierającej większą liczbę całkowitą. Ten proces jest kontynuowany, aż n1 i n2 będą równe.
Powyższe dwa programy działają zgodnie z przeznaczeniem tylko wtedy, gdy użytkownik wprowadzi dodatnie liczby całkowite. Oto mała modyfikacja drugiego przykładu, aby znaleźć GCD zarówno dla dodatnich, jak i ujemnych liczb całkowitych.
Przykład 3: GCD dla liczb dodatnich i ujemnych
fun main(args: Array) ( var n1 = 81 var n2 = -153 // Always set to positive n1 = if (n1> 0) n1 else -n1 n2 = if (n2> 0) n2 else -n2 while (n1 != n2) ( if (n1> n2) n1 -= n2 else n2 -= n1 ) println("G.C.D = $n1") )
Po uruchomieniu programu wynik będzie następujący:
GCD = 9