Факториалом числа  n называется произведение чисел от 1 до n  (n! = 1.2.3. … .n). ( По определению 0! = 1, 1! = 1) Для заданного n вычислить  n!. До какого значения n мы получим правильный результат?
По идее, это совсем простая задача: взять f:=1; и затем умножать f  на 2, 3 и так далее до n. Эти действия и выполняются в цикле в строках 8, 9. В этой задаче интересно другое. Значение n! растет очень быстро. Так, если мы объявили f:integer; (строка 4), то мы можем получить правильный результат только до  n=12. При n=13 результат превосходит максимальное значение для integer (2147483647). Если же мы объявим f:Int64; ( не забудьте, это в Free Pascal, а   в  C++ long long f;), то правильный результат мы получим до n=20. 
Правда, если мы не хотим получить много верных цифр, то можно объявить f:double; Тогда можно вычислить n! до значения n=170, но с 15 верными первыми цифрами (а всего цифр в числе будет 307). 
Можно объявить f:extended;  (в C++ long double f;), тогда можно вычислить n! до значения n=1754, но с 17 верными первыми цифрами (а всего цифр в числе будет 4931).
Примечание. Для проверить правильности результатов  работы программы можно воспользоваться калькулятором в Windows.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Program
 A2_22; Var  n,i:integer;    f:integer; BEGIN   readln(n);   f:=1;   for
 i:=2
 to
 n
 do     f:=f*i;   writeln(f);   readln; END. | //Program
 A2.22; #include
 <iostream> 
 using
 namespace std; 
 int
 main() {  int n,i;     int f=1;     cin>>n;     for(i=2;i<=n;i++)          f=f*i;     cout << f << endl;     return 0; } | 



















