Tässä ohjelmassa opit etsimään kahden numeron GCD Kotlinista. Tämä tehdään käyttämällä while loopia if else -lausekkeen avulla.
Kahden kokonaisluvun HCF tai GCD on suurin kokonaisluku, joka voi jakaa molemmat numerot tarkalleen (ilman loppuosaa).
Esimerkki 1: Etsi kahden numeron GCD käyttämällä while-silmukkaa
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") )
Kun suoritat ohjelmaa, tulos on:
81 ja 153 GCD on 9
Täällä kaksi numeroa, joiden GCD löytyy, tallennetaan vastaavasti n1: ään ja n2: een.
Sitten suoritetaan jonkin aikaa silmukka, kunnes i on pienempi kuin n1 ja n2. Tällä tavalla kaikki numerot, jotka ovat 1: stä pienimpään kahdesta numerosta, toistetaan GCD: n löytämiseksi.
Jos sekä n1 että n2 jaetaan i: llä, gcd asetetaan numeroksi. Tämä jatkuu, kunnes se löytää suurimman määrän (GCD), joka jakaa sekä n1 että n2 ilman loppuosaa.
Toisin kuin Java, et voi käyttää for -silmukkaa tämän ongelman ehtojen kanssa. Tässä on vastaava Java-koodi: Java-ohjelma kahden numeron GCD: n etsimiseen.
On parempi vaihtoehto löytää GCD Kotlinista seuraavasti:
Esimerkki 2: Etsi kahden numeron GCD (parempi vaihtoehto)
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") )
Kun suoritat ohjelmaa, tulos on:
GCD = 9
Tämä on parempi tapa löytää GCD. Tässä menetelmässä pienempi kokonaisluku vähennetään suuremmasta kokonaisluvusta ja tulos osoitetaan muuttujalle, jolla on suurempi kokonaisluku. Tätä prosessia jatketaan, kunnes n1 ja n2 ovat yhtä suuret.
Edellä mainitut kaksi ohjelmaa toimivat tarkoitetulla tavalla vain, jos käyttäjä syöttää positiivisia kokonaislukuja. Tässä on pieni muunnos toisesta esimerkistä GCD: n löytämiseksi sekä positiivisille että negatiivisille kokonaislukuille.
Esimerkki 3: GCD sekä positiivisille että negatiivisille luvuille
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") )
Kun suoritat ohjelmaa, tulos on:
GCD = 9