V tomto programu se naučíte najít GCD dvou čísel v Kotlin. To se provádí pomocí while smyčky pomocí příkazu if else.
HCF nebo GCD dvou celých čísel je největší celé číslo, které dokáže přesně rozdělit obě čísla (bez zbytku).
Příklad 1: Najděte GCD dvou čísel pomocí smyčky 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") )
Když spustíte program, výstup bude:
GCD 81 a 153 je 9
Zde jsou dvě čísla, jejichž GCD lze nalézt, uložena v n1 a n2.
Poté se provede smyčka while, dokud není i menší než n1 i n2. Tímto způsobem jsou všechna čísla mezi 1 a nejmenším ze dvou čísel iterována, aby se našla GCD.
Pokud jsou n1 i n2 dělitelné i, gcd je nastaveno na číslo. Takto to pokračuje, dokud nenajdete největší číslo (GCD), které dělí n1 a n2 beze zbytku.
Na rozdíl od Javy nemůžete použít smyčku for s podmínkami pro tento problém. Zde je ekvivalentní kód Java: Program Java k vyhledání GCD dvou čísel.
Lepší alternativa pro nalezení GCD v Kotlin je následující:
Příklad 2: Najděte GCD dvou čísel (lepší alternativa)
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") )
Když spustíte program, výstup bude:
GCD = 9
Toto je lepší způsob, jak najít GCD. V této metodě se menší celé číslo odečte od většího celého čísla a výsledek se přiřadí proměnné obsahující větší celé číslo. Tento proces pokračuje, dokud n1 a n2 nejsou stejné.
Výše uvedené dva programy fungují, jak bylo zamýšleno, pouze pokud uživatel zadá kladná celá čísla. Zde je malá úprava druhého příkladu, jak najít GCD pro pozitivní i negativní celá čísla.
Příklad 3: GCD pro kladná i záporná čísla
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") )
Když spustíte program, výstup bude:
GCD = 9