Пояснення C++ програми для обчислення факторіалів

Підключення бібліотек

#include <iostream>

Підключаємо стандартну бібліотеку вводу/виводу C++. Дає змогу користуватися cout для виводу та cin для вводу.

#include <iomanip> // для setw()

Бібліотека для форматованого виводу, зокрема функції setw() для вирівнювання чисел.

using namespace std;

Щоб не писати std::cout та std::endl кожного разу.

Функція main

int main() {
    cout << "Factorials for type int:\n";
    int fact_int = 1;
    for (int i = 1; i <= 25; i++) {
        if (i > 12) {
            cout << setw(2) << i << "! = Overflow int\n";
        } else {
            fact_int *= i;
            cout << setw(2) << i << "! = " << fact_int << endl;
        }
    }

Цей блок обчислює факторіали для типу int. Перевірка i > 12 потрібна, бо після 12! буде переповнення.

    cout << "\nFactorials for type long long:\n";
    long long fact_ll = 1;
    for (int i = 1; i <= 25; i++) {
        if (i > 20) {
            cout << setw(2) << i << "! = Overflow long long\n";
        } else {
            fact_ll *= i;
            cout << setw(2) << i << "! = " << fact_ll << endl;
        }
    }

Аналогічно, але для типу long long, який більший. Переповнення після 20!.

    system("pause");
    return 0;
}

Зупинка програми до натискання клавіші (Windows) та повернення 0 як коду успіху.

Схематичне зображення факторіалів

n n! (приблизно) Тип int Тип long long
11okok
22okok
36okok
424okok
5120okok
6720okok
75040okok
840 320okok
9362 880okok
103 628 800okok
1139 916 800okok
12479 001 600okok
136 227 020 800переповненняok
1487 178 291 200переповненняok
202 432 902 008 176 640 000переповненняok
2151 090 942 171 709 440 000переповненняпереповнення
2515 511 210 043 330 985 984 000 000переповненняпереповнення

Факторіал росте дуже швидко. int переповнюється після 12!, а long long після 20!. Тому в програмі ми ставимо відповідні умови.

Семестр №1
Наші партнери