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

Tutoriais Básicos de Java

Controle de fluxo Java

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceções Java

Java Lista (List)

Java Queue (Fila)

conjunto Java Map

conjunto Java Set

Java Entrada e Saída (I/O)

Reader Java/Writer

Outros tópicos do Java

Programa Java para encontrar o fatorial de um número

Exemplos Java Completo

Neste programa, você aprenderá a usar loops for e while no Java para encontrar o fatorial de um número.

O fatorial de números positivos é dado por: n

fatorial de n (n!) = 1 * 2 * 3 * 4 * ... * n

Exemplo1Usar loop for para encontrar o fatorial de um 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("Fatorial de %d = %d", num, factorial);
    }
}

Quando o programa é executado, a saída é:

Fatorial de 10 = 3628800

Neste programa, usamos um loop for para percorrer1e o número dado num(10) todos os números entre eles, cada um dos quais é o produto até num e armazenado na variável factorial.

Usamos long em vez de int para armazenar resultados grandes de fatorial. No entanto, ainda não é suficientemente grande para armazenar valores de números maiores (por exemplo10Fatorial de 0)

Para resultados que não podem ser armazenados em uma variável long, usamos a variável BigInteger declarada na biblioteca java.math.

Exemplo2Usar BigInteger para encontrar o fatorial de um 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("Fatorial de %d = %d", num, factorial);
    }
}

Quando o programa é executado, a saída é:

3Fatorial de 0 = 265252859812191058636308480000000

Aqui, usamos BigInteger para armazenar o fatorial.

Devido a*Não pode ser usado juntamente com BigInteger, portanto usamos multiply() para o produto. Além disso, o num deve ser convertido explicitamente para BigInteger para a multiplicação.

Porque*Não pode ser usado com BigInteger, então usamos multiply() para a computação. Além disso, num deve ser convertido para BigInteger para a operação de multiplicação.

Da mesma forma, também podemos usar o loop while para resolver esse problema.

Exemplo3:Usar loop while para encontrar o fatorial do 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 Fatorial  = %d", num, factorial);
    }
}

Quando o programa é executado, a saída é:

5 Fatorial  = 120

No programa acima, diferentemente do loop for, devemos aumentar o valor de i dentro do corpo do loop.

Embora os dois programas sejam tecnicamente corretos, neste caso, é melhor usar um loop for. Isso porque o número de iterações (máximo de num) é conhecido.

Exemplos Java Completo