Program Java k vyhledání faktoriálu čísla

V tomto programu se naučíte najít faktoriál čísla pomocí smyčky for a while v Javě.

Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata Java:

  • Java pro smyčku
  • Zatímco Java a dělat … zatímco Loop

Faktoriál kladného čísla n je dán vztahem:

 faktoriál n (n!) = 1 * 2 * 3 * 4 * … * n 

Příklad 1: Najděte faktoriál čísla pomocí smyčky 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); ) )

Výstup

 Faktoriál 10 = 3628800

V tomto programu jsme použili smyčku pro smyčku všech čísel mezi 1 a daným číslem num (10) a součin každého čísla do num je uložen v proměnném faktoriálu.

Používali jsme dlouho místo int k ukládání velkých výsledků faktoriálu. Stále však není dost velký na to, aby ukládal hodnotu větších čísel (řekněme 100).

U výsledků, které nelze uložit do dlouhé proměnné, použijeme BigIntegerproměnnou deklarovanou v java.mathknihovně.

Příklad 2: Najděte faktoriál čísla 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); ) )

Výstup

 Faktoriál 30 = 265252859812191058636308480000000

Zde místo toho longpoužíváme BigIntegerproměnný faktoriál.

Protože *nelze použít s BigInteger, místo toho použijeme multiply()pro produkt. BigIntegerPro rozmnožování by také mělo být sesláno num .

Podobně můžeme k řešení tohoto problému použít i while smyčku.

Příklad 3: Najděte faktoriál čísla pomocí smyčky 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); ) )

Výstup

 Faktoriál 5 = 120

Ve výše uvedeném programu, na rozdíl od smyčky for, musíme zvýšit hodnotu i uvnitř těla smyčky.

Ačkoli jsou oba programy technicky správné, je v tomto případě lepší použít smyčku. Je to proto, že je znám počet iterací (až num).

Na této stránce se naučíte najít faktoriál čísla pomocí rekurze.

Zajímavé články...