Задачи / Числа / Факториал числа
Факториал числа: блок-схема и алгоритм
n! = 1 · 2 · 3 · … · n. Произведение накапливается так же, как сумма, но начальное значение — 1, а не 0. По определению 0! = 1.
Алгоритм по шагам
- Ввести n.
- Присвоить f = 1.
- Для i от 1 до n умножить f на i.
- Вывести f.
Пример работы
| Вход | n = 5 |
| Шаг 1 | f = 1 |
| Шаг 2 | i = 1: f = 1 |
| Шаг 3 | i = 2: f = 2 |
| Шаг 4 | i = 3: f = 6 |
| Шаг 5 | i = 4: f = 24 |
| Шаг 6 | i = 5: f = 120 |
| Результат | 120 |
Решение на Python
n = int(input())
f = 1
for i in range(1, n + 1):
f *= i
print(f)
Решение на Pascal
var n, i: integer;
f: int64;
begin
readln(n);
f := 1;
for i := 1 to n do
f := f * i;
writeln(f);
end.
Код блок-схемы
Схема выше нарисована по этому псевдокоду. Скопируйте его в редактор блок-схем или нажмите «Открыть блок-схему в редакторе».
блок-схема: Факториал числа
начало
ввод n
f = 1
для i от 1 до n
f = f * i
вывод f
конец
Сложность
O(n) умножений. Факториал растёт очень быстро: 20! уже не помещается в 64-битное целое, в Python ограничения нет.
Частые ошибки
- Начальное значение f = 0 — всё произведение станет нулём.
- Тип integer в Pascal: 13! уже не помещается в 32 бита, нужен int64.
- Цикл range(n) в Python идёт от 0 — произведение обнулится.
Похожие задачи
- Проверка числа на простотуЧисло простое, если у него ровно два делителя: 1 и само число.
- НОД двух чисел: алгоритм ЕвклидаНОД(a, b) не меняется, если большее число заменить остатком от деления на меньшее: НОД(a, b) = НОД(b, a mod b).
- Числа ФибоначчиКаждое число Фибоначчи — сумма двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13… Храним только два последних числа и на каждом шаге сдвигаем их вперёд..
- Перевод числа в двоичную системуДелим число на 2 и записываем остатки: они и есть двоичные цифры, но в обратном порядке.
- Сумма цифр числаПоследняя цифра числа — это остаток от деления на 10, а n div 10 отбрасывает её.
Обозначения фигур и синтаксис кода блок-схем — в справочнике: блок-схема по ГОСТ 19.701. Все задачи.