English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Cola (Queue)

Java Conjuntos Map

Java Conjuntos Set

Java Entrada/Salida (I/O)

Reader de Java/Writer

Temas de Java

Programa Java para encontrar el factorial de un número

Java Ejemplos completos

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

Ejemplo1Usar bucle for para encontrar el factorial de un número

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.

Ejemplo2Usar BigInteger para encontrar el factorial de un número

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.

Ejemplo3Use un bucle while para encontrar el factorial de un número

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.

Java Ejemplos completos