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

教程基础Java

Controllo dei flussi Java

Array Java

Java orientata agli oggetti (I)

Java orientata agli oggetti (II)

Java orientata agli oggetti (III)

Gestione delle eccezioni Java

Elenco Java (List)

Java Queue(队列)

Java Queue (Coda)

Java Map Collection

Java Set Collection

Java Input/Output (I/O)

Java Reader/Writer

Altri argomenti Java

Esempi Java completi

Programma Java per trovare il factorial di un numero

In questo programma, imparerai a trovare il factorial di un numero utilizzando i cicli for e while in Java.

Il factorial di un numero positivo è dato da: n!

Esempio 1: Trovare il factorial di un numero utilizzando un ciclo 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("Factoriale di %d = %d", num, factorial)
    }
}

Quando si esegue questo programma, l'output è:

Factoriale di 10 = 3628800

In questo programma, utilizziamo un ciclo for per percorrere tutti i numeri tra 1 e il numero dato num (10), moltiplicando ogni numero fino a num e memorizzandolo nella variabile factorial.

Usiamo long invece di int per memorizzare il risultato grande del factorial. Tuttavia, non è abbastanza grande per memorizzare il valore di numeri più grandi (ad esempio, il factorial di 100)

Per risultati che non possono essere memorizzati in una variabile long, utilizziamo la variabile BigInteger dichiarata nella libreria java.math.

Esempio 2: Trovare il factorial di un numero utilizzando 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("%d del factorial = %d", num, factorial)
    }
}

Quando si esegue questo programma, l'output è:

Il factorial di 30 = 265252859812191058636308480000000

Qui, utilizziamo BigInteger per memorizzare il factorial.

Poiché * non può essere utilizzato con BigInteger, utilizziamo multiply() per questo prodotto. Inoltre, num deve essere convertito in BigInteger per la moltiplicazione forzata.

Poiché * non può essere utilizzato con BigInteger, utilizziamo multiply() per il calcolo. Inoltre, num deve essere convertito in BigInteger per l'operazione di moltiplicazione.

Allo stesso modo, possiamo anche risolvere questo problema utilizzando un ciclo while.

Esempio 3: Trovare il fattoriale di un numero utilizzando il ciclo 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! = %d", num, factorial);
    }
}

Quando si esegue questo programma, l'output è:

5! = 120

Nel programma sopra, diversamente dal ciclo for, dobbiamo aumentare il valore di i all'interno del ciclo.

Anche se entrambi i programmi sono tecnicamente corretti, in questo caso è meglio utilizzare un ciclo for. Questo è perché il numero di iterazioni (massimo num) è noto.

Esempi Java completi