English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este programa, aprenderás a usar bucles for y while en Java para encontrar el factorial de un número.
El factorial de números positivos se da por: n
factorial de n (n!) = 1 * 2 * 3 * 4 * ... * n
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 de %d = %d", num, factorial); } }
Al ejecutar este programa, la salida es:
Factorial de 10 = 3628800
En este programa, recorrimos1y el número dado num(10) entre todos los números, el producto de cada número hasta num y almacenado en la variable factorial.
Usamos long en lugar de int para almacenar resultados grandes de factorial. Sin embargo, aún no es lo suficientemente grande para almacenar valores de números más grandes (por ejemplo10El factorial de 0)
Para resultados que no se pueden almacenar en una variable de tipo long, usamos la variable BigInteger declarada en la biblioteca java.math.
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("El factorial de %d = %d", num, factorial); } }
Al ejecutar este programa, la salida es:
3El factorial de 0 = 265252859812191058636308480000000
Aquí, usamos BigInteger en lugar de long para almacenar el factorial.
Debido a*No se puede usar BigInteger junto con, por lo tanto, lo usamos multiply() para ese producto. Además, num debe ser convertido a BigInteger para la multiplicación.
Porque*No se puede usar con BigInteger, por lo que usamos multiply() para la computación. Además, num debe convertirse a BigInteger para la operación de multiplicación.
Del mismo modo, también podemos resolver este problema usando un 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("%d El factorial de = %d", num, factorial); } }
Al ejecutar este programa, la salida es:
5 El factorial de 120
En el programa anterior, a diferencia del bucle for, debemos aumentar el valor de i dentro del bucle.
A pesar de que ambos programas son técnicamente correctos, en este caso es mejor usar un bucle for. Esto se debe a que el número de iteraciones (máximo num) es conocido.