In dit programma leer je GCD van twee getallen in Kotlin te vinden. Dit wordt gedaan door while loop te gebruiken met behulp van de if else-instructie.
De HCF of GCD van twee gehele getallen is het grootste gehele getal dat beide getallen exact kan delen (zonder een rest).
Voorbeeld 1: Zoek GCD van twee getallen met while-lus
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") )
Wanneer u het programma uitvoert, is de uitvoer:
GCD van 81 en 153 is 9
Hier zijn twee nummers waarvan de GCD te vinden is, opgeslagen in respectievelijk n1 en n2.
Vervolgens wordt een while-lus uitgevoerd totdat i kleiner is dan zowel n1 als n2. Op deze manier worden alle getallen tussen 1 en de kleinste van de twee getallen herhaald om de GCD te vinden.
Als zowel n1 als n2 deelbaar zijn door i, wordt ggd op het getal gezet. Dit gaat door totdat het het grootste getal (GCD) vindt dat zowel n1 als n2 zonder rest deelt.
In tegenstelling tot Java kun je geen for-lus gebruiken met voorwaarden voor dit probleem. Hier is de equivalente Java-code: Java-programma om GCD van twee nummers te zoeken.
Er is als volgt een beter alternatief om GCD in Kotlin te vinden:
Voorbeeld 2: zoek GCD van twee getallen (beter alternatief)
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") )
Wanneer u het programma uitvoert, is de uitvoer:
GCD = 9
Dit is een betere manier om de GCD te vinden. Bij deze methode wordt een kleiner geheel getal afgetrokken van het grotere gehele getal en wordt het resultaat toegewezen aan de variabele die een groter geheel getal bevat. Dit proces wordt voortgezet totdat n1 en n2 gelijk zijn.
De bovenstaande twee programma's werken alleen zoals bedoeld als de gebruiker positieve gehele getallen invoert. Hier is een kleine wijziging van het tweede voorbeeld om de GCD te vinden voor zowel positieve als negatieve gehele getallen.
Voorbeeld 3: GCD voor zowel positieve als negatieve getallen
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") )
Wanneer u het programma uitvoert, is de uitvoer:
GCD = 9