En este programa, aprenderá a encontrar el factorial de un número usando el bucle for y while en Java.
Para comprender este ejemplo, debe tener el conocimiento de los siguientes temas de programación de Java:
- Java para Loop
- Java while y do… while Loop
El factorial de un número positivo n viene dado por:
factorial de n (n!) = 1 * 2 * 3 * 4 *… * n
Ejemplo 1: Encuentra factorial de un número usando el bucle 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); ) )
Salida
Factorial de 10 = 3628800
En este programa, hemos utilizado el ciclo for para recorrer todos los números entre 1 y el número dado num (10), y el producto de cada número hasta que num se almacena en un factorial variable.
Hemos utilizado long en lugar de int para almacenar grandes resultados de factorial. Sin embargo, todavía no es lo suficientemente grande para almacenar el valor de números más grandes (digamos 100).
Para los resultados que no se pueden almacenar en una variable larga, usamos la BigInteger
variable declarada en la java.math
biblioteca.
Ejemplo 2: Encuentra factorial de un número usando 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); ) )
Salida
Factorial de 30 = 265252859812191058636308480000000
Aquí, en lugar de long
, usamos la BigInteger
variable factorial.
Dado que, *
no se puede usar con BigInteger
, en su lugar usamos multiply()
para el producto. Además, num se debe convertir en BigInteger
para la multiplicación.
Asimismo, también podemos usar un bucle while para resolver este problema.
Ejemplo 3: Encuentra factorial de un número usando el bucle 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); ) )
Salida
Factorial de 5 = 120
En el programa anterior, a diferencia de un ciclo for, tenemos que incrementar el valor de i dentro del cuerpo del ciclo.
Aunque ambos programas son técnicamente correctos, es mejor usar for loop en este caso. Es porque se conoce el número de iteraciones (hasta num).
Visite esta página para aprender a encontrar factorial de un número usando la recursividad.