Kotlin程序查找兩個(gè)數(shù)字的最大公因數(shù)(GCD)

Kotlin 實(shí)例大全

在此程序中,您將學(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ù)。

示例1:使用while循環(huán)查找兩個(gè)數(shù)字的最大公因數(shù)GCD

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的更好方法如下:

示例2:查找兩個(gè)數(shù)字的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。

示例3:正數(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

Kotlin 實(shí)例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清