在此程序中,您將學(xué)習(xí)在Kotlin中查找兩個(gè)數(shù)字的最大公因數(shù)。這是通過(guò)在if else語(yǔ)句的幫助下使用while循環(huán)來(lái)完成的。
兩個(gè)整數(shù)的HCF或GCD是可以精確地將兩個(gè)數(shù)相除(沒(méi)有余數(shù))的最大整數(shù)。
fun main(args: Array<String>) { val n1 = 81 val n2 = 153 var gcd = 1 var i = 1 while (i <= n1 && i <= n2) { //檢查i是否是兩個(gè)整數(shù)的因數(shù) if (n1 % i == 0 && n2 % i == 0) gcd = i ++i } println("$n1和$n2的最大公因數(shù)是 $gcd") }
運(yùn)行該程序時(shí),輸出為:
81 和 153 的最大公因數(shù)是 9 9
在此,將要找到其最大公因數(shù)的兩個(gè)數(shù)字分別存儲(chǔ)在n1和n2中。
然后,執(zhí)行for循環(huán),直到i小于n1和n2為止。這樣,迭代1到兩個(gè)數(shù)字中最小的所有數(shù)字以找到最大公因數(shù)。
如果n1和n2都可被i整除,則將gcd設(shè)置為數(shù)字。 一直進(jìn)行到找到最大數(shù)(GCD),該數(shù)將n1和n2均除而無(wú)余數(shù)。
與Java不同,您不能使用帶有條件的for循環(huán)來(lái)解決此問(wèn)題。以下是等效的Java代碼:查找兩個(gè)數(shù)字的GCD的Java程序。
在Kotlin中找到GCD的更好方法如下:
fun main(args: Array<String>) { var n1 = 81 var n2 = 153 while (n1 != n2) { if (n1 > n2) n1 -= n2 else n2 -= n1 } println("G.C.D = $n1") }
運(yùn)行該程序時(shí),輸出為:
G.C.D = 9
這是查找GCD的更好方法。在此方法中,從較大的整數(shù)中減去較小的整數(shù),然后將結(jié)果分配給保存較大整數(shù)的變量。這個(gè)過(guò)程一直持續(xù)到n1和n2相等。
僅當(dāng)用戶(hù)輸入正整數(shù)時(shí),以上兩個(gè)程序才能按預(yù)期工作。這是第二個(gè)示例的一些修改,可以找到正整數(shù)和負(fù)整數(shù)的GCD。
fun main(args: Array<String>) { var n1 = 81 var n2 = -153 //始終為正數(shù) 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") }
運(yùn)行該程序時(shí),輸出為:
G.C.D = 9