В этой программе вы научитесь находить факториал числа с помощью цикла for и while в Java.
Чтобы понять этот пример, вы должны знать следующие темы программирования Java:
- Java для цикла
- Java while и do … while Loop
Факториал положительного числа n определяется как:
факториал n (n!) = 1 * 2 * 3 * 4 *… * n
Пример 1: найти факториал числа с помощью цикла 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); ) )
Вывод
Факториал 10 = 3628800
В этой программе мы использовали цикл for для перебора всех чисел от 1 до заданного числа num (10), а произведение каждого числа на число сохраняется в переменном факториале.
Мы использовали long вместо int для хранения больших результатов факториала. Однако он все еще недостаточно велик, чтобы хранить значение больших чисел (скажем, 100).
Для результатов, которые нельзя сохранить в длинной переменной, мы используем BigInteger
переменную, объявленную в java.math
библиотеке.
Пример 2: найти факториал числа с помощью 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); ) )
Вывод
Факториал 30 = 265252859812191058636308480000000
Здесь, вместо того long
, мы используем BigInteger
переменный факториал.
Поскольку, *
нельзя использовать с BigInteger
, мы вместо этого используем multiply()
для продукта. Кроме того, BigInteger
для умножения необходимо указать число .
Точно так же мы можем использовать цикл while для решения этой проблемы.
Пример 3: найти факториал числа с помощью цикла 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); ) )
Вывод
Факториал 5 = 120
В приведенной выше программе, в отличие от цикла for, мы должны увеличивать значение i внутри тела цикла.
Хотя обе программы технически правильны, в этом случае лучше использовать цикл for. Это потому, что количество итераций (до числа) известно.
Посетите эту страницу, чтобы узнать, как найти факториал числа с помощью рекурсии.