Program Kotlin do znajdowania silni liczby

W tym programie nauczysz się znajdować silnię liczby za pomocą pętli for i while w Kotlinie. Dowiesz się również, jak używać zakresów do rozwiązania tego problemu.

Silnia liczby dodatniej n jest wyrażona wzorem:

 silnia n (n!) = 1 * 2 * 3 * 4 *… * n 

Przykład 1: Znajdź silnię liczby za pomocą pętli for

 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") )

Po uruchomieniu programu wynik będzie następujący:

 Silnia 10 = 3628800

W tym programie użyliśmy pętli do przechodzenia przez wszystkie liczby od 1 do podanej liczby num (10), a iloczyn każdej liczby do liczby num jest przechowywany w zmiennej silni.

W przeciwieństwie do Javy, w Kotlinie można używać 1… numoperatorów range ( ) i in, aby przechodzić w pętli przez liczby od 1 do num.

Ponadto użyliśmy long zamiast int do przechowywania dużych wyników silni.

Jednak nadal nie jest wystarczająco duża, aby przechowywać wartość większych liczb (powiedzmy 100). W przypadku wyników, których nie można zapisać w długiej zmiennej, używamy BigIntegerzmiennej zadeklarowanej w java.mathbibliotece.

Oto odpowiednik kodu w języku Java: Program w języku Java do znajdowania silniowej liczby.

Przykład 2: Znajdź silnię liczby za pomocą 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") )

Po uruchomieniu programu wynik będzie następujący:

 Silnia 30 = 205891132094649000000000000000000000000000000

Tutaj zamiast longużywamy BigIntegerzmiennej silni.

Ponieważ *nie można używać z BigInteger, używamy zamiast multiply()tego produktu. Do BigIntegermnożenia należy rzutować również num .

Podobnie, do rozwiązania tego problemu możemy użyć pętli while.

Przykład 3: Znajdź silnię liczby za pomocą pętli while

 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") )

Po uruchomieniu programu wynik będzie następujący:

 Silnia 5 = 120

W powyższym programie, w przeciwieństwie do pętli for, musimy zwiększyć wartość i wewnątrz ciała pętli.

Chociaż oba programy są technicznie poprawne, w takim przypadku lepiej jest użyć pętli for. Dzieje się tak, ponieważ znana jest liczba iteracji (do liczby).

Odwiedź tę stronę, aby dowiedzieć się, jak znaleźć silnię liczby za pomocą rekurencji.

Interesujące artykuły...