Šioje programoje sužinosite, kaip surasti skaičiaus faktorą naudojant „Kotlin“ ir „loop“. Taip pat išmoksite naudoti diapazonus šiai problemai išspręsti.
Teigiamo skaičiaus n faktorą pateikia:
faktorius n (n!) = 1 * 2 * 3 * 4 *… * n
1 pavyzdys: raskite skaičiaus faktorių naudodami ciklą
fun main(args: Array) ( val num = 10 var factorial: Long = 1 for (i in 1… num) ( // factorial = factorial * i; factorial *= i.toLong() ) println("Factorial of $num = $factorial") )
Kai paleisite programą, išvestis bus:
Faktorinis koeficientas 10 = 3628800
Šioje programoje mes naudojome kilpą, kad galėtume sureguliuoti visus skaičius nuo 1 iki nurodyto skaičiaus num (10), o kiekvieno skaičiaus iki numerio sandauga yra saugoma kintamojoje faktorijoje.
Skirtingai nuo „Java“, „Kotlin“ galite naudoti diapazonus ( 1… num
) ir operatorių, kad galėtumėte peržvelgti skaičius nuo 1 iki num.
Be to, mes naudojome ilgai, o ne int, kad išsaugotume didelius faktorių rezultatus.
Tačiau jis vis dar nėra pakankamai didelis, kad būtų galima išsaugoti didesnių skaičių (tarkime 100) vertę. Rezultatams, kurių negalima išsaugoti ilgame kintamajame, naudojame bibliotekoje BigInteger
deklaruotą kintamąjį java.math
.
Čia yra lygiavertis „Java“ kodas: „Java“ programa faktoriaus skaičiui rasti.
2 pavyzdys: raskite skaičiaus faktorių naudodami „BigInteger“
import java.math.BigInteger fun main(args: Array) ( val num = 30 var factorial = BigInteger.ONE for (i in 1… num) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(num.toLong())) ) println("Factorial of $num = $factorial") )
Kai paleisite programą, išvestis bus:
Faktorinis koeficientas 30 = 205891132094649000000000000000000000000000000000000
Vietoj to long
, mes naudojame BigInteger
kintamąjį faktorių.
Kadangi *
negalima naudoti BigInteger
, mes naudojame multiply()
produktą. Be to, skaičius turi būti perduotas BigInteger
dauginti.
Taip pat mes galime naudoti tam tikrą laiką, kad išspręstume šią problemą.
3 pavyzdys: suraskite skaičiaus faktorių naudodami while loop
fun main(args: Array) ( val num = 5 var i = 1 var factorial: Long = 1 while (i <= num) ( factorial *= i.toLong() i++ ) println("Factorial of $num = $factorial") )
Kai paleisite programą, išvestis bus:
Faktorinis koeficientas 5 = 120
Pirmiau pateiktoje programoje, skirtingai nei „for loop“, mes turime padidinti i reikšmę kilpos kūne.
Nors abi programos yra techniškai teisingos, šiuo atveju geriau naudoti ciklą. Taip yra todėl, kad yra žinomas iteracijų skaičius (iki skaičių).
Apsilankykite šiame puslapyje, kad išmoktumėte surasti faktoriaus skaičių naudodami rekursiją.