Šajā programmā jūs iemācīsities atrast Kotlinā divu ciparu GCD. Tas tiek darīts, izmantojot while ciklu, izmantojot paziņojumu if else.
Divu veselu skaitļu HCF vai GCD ir lielākais vesels skaitlis, kas var precīzi sadalīt abus skaitļus (bez atlikuma).
1. piemērs: atrodiet divu skaitļu GCD, izmantojot while ciklu
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") )
Palaidot programmu, izeja būs:
81 un 153 GCD ir 9
Šeit divi numuri, kuru GCD ir atrodami, tiek glabāti attiecīgi n1 un n2.
Tad, kamēr tiek izpildīta cilpa, līdz i ir mazāks par n1 un n2. Tādā veidā visi skaitļi no 1 līdz mazākajam no diviem skaitļiem tiek atkārtoti, lai atrastu GCD.
Ja gan n1, gan n2 dalās ar i, gcd tiek iestatīts uz skaitli. Tas turpinās, līdz tiek atrasts lielākais skaitlis (GCD), kas dala gan n1, gan n2 bez atlikuma.
Atšķirībā no Java, jūs nevarat izmantot for ciklu ar nosacījumiem šai problēmai. Šeit ir ekvivalents Java kods: Java programma divu ciparu GCD atrašanai.
Ir labāka alternatīva GCD atrašanai Kotlīnā šādi:
2. piemērs: atrodiet divu skaitļu GCD (labāka alternatīva)
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") )
Palaidot programmu, izeja būs:
GCD = 9
Tas ir labāks veids, kā atrast GCD. Šajā metodē mazāks vesels skaitlis tiek atņemts no lielākā skaitļa, un rezultāts tiek piešķirts mainīgajam, kurš tur lielāku skaitli. Šis process tiek turpināts, līdz n1 un n2 ir vienādi.
Iepriekš minētās divas programmas darbojas kā paredzēts tikai tad, ja lietotājs ievada pozitīvus veselus skaitļus. Šeit ir neliela otrā piemēra modifikācija, lai atrastu GCD gan pozitīviem, gan negatīviem veseliem skaitļiem.
3. piemērs: GCD gan pozitīvajiem, gan negatīvajiem skaitļiem
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") )
Palaidot programmu, izeja būs:
GCD = 9