Program w języku Java do znajdowania silni liczby

W tym programie nauczysz się znajdować silnię liczby za pomocą pętli for i while w Javie.

Aby zrozumieć ten przykład, należy znać następujące tematy dotyczące programowania w języku Java:

  • Java for Loop
  • Java while i zrób… while Loop

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

 public class Factorial ( public static void main(String() args) ( int num = 10; long factorial = 1; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial *= i; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )

Wynik

 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.

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.

Przykład 2: Znajdź silnię liczby za pomocą BigInteger

 import java.math.BigInteger; public class Factorial ( public static void main(String() args) ( int num = 30; BigInteger factorial = BigInteger.ONE; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(i)); ) System.out.printf("Factorial of %d = %d", num, factorial); ) )

Wynik

 Silnia 30 = 265252859812191058636308480000000

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

 public class Factorial ( public static void main(String() args) ( int num = 5, i = 1; long factorial = 1; while(i <= num) ( factorial *= i; i++; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )

Wynik

 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...