Помощь - Поиск - Пользователи - Календарь
Полная версия: Сумма факториалов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Rocket
Нужно написать программу вычисления суммы факториалов всех чётных чисел от 2 до 100, используя подпрограмму для вычисления факториалов.
volvo
В поиск... Подпрограмма для вычисления факториалов больших чисел уже выкладывалась на форуме, так же, как и программа для нахождения суммы, которая тебе нужна!
Rocket
Программу я написал:

Program FactorialX;
const n=100;
Function sumfact(n:integer):real;
var i:integer; p:real; s:real;
begin
p:=1;
s:=0;
begin
for i:=1 to n do
begin p:=p*i;
if i mod 2=0 then s:=s+p;
end;
end;
sumfact:=s;
end;
begin
writeln('Summa factorialov = ', sumfact(n));
readln;
end.


Но, когда я считаю сумму 100! компилятор выдаёт следующую ошибку: Floating point overflow.
Что делать, подскажите.
klem4
А ты попробуй сам посчитать 100! и поймешь в чем дело ... очень большое число выходит, в Real оно не поместится

Что тебе нужно делать ? Прочитать пост №2.
Rocket
В поиске похужую тему не получилось найти.
Подскажите пожайлуста.
klem4
Длинная арифметика

Внизу модуль Volvo для работы с большими числами

Цитата
Кроме этого, модуль содержит реализацию вычисления факториала, корректно работающую с числами больше 12...
Procedure Fact(Var A: TLargeInt; n: LongInt);
Rocket
Вот оканчательный вариант программы (решена через рекурсию):

Program FactorilX;
{$N+}
var
n:integer; s:double;

function f(a:double):double;
begin
if a=0 then f:=1
else f:=a*f(a-1)
end;

begin
for n:=2 to 100 do
if n mod 2=0 then s:=s+f(n);
writeln(s);
readln;
end.


Большое спасибо тем, кто принимал участие в обсуждение этого топика.
volvo
И тебе ЭТОГО достаточно? Ты бы сразу говорил, что тебе не нужно вычислять факториал с точностью до единиц, а достаточно результата 9.333564332617967 * 10^157 (ты представляешь себе, ЧТО это за число? Кстати, хочешь я для интереса приведу здесь точное, до единиц значение нужной тебе суммы?)
Rocket
Валяй.
volvo
Вот эта сумма:
Цитата(Console)
9333564332617971985596018467227020903065654134088304973047398395833383430802345
8451476498346375013246436791749910869210824214880296081688944437945541028258666
arhimag
долгол программа считала?
volvo
0.01 секунды, а тебе зачем?
arhimag
мой варинат работал 3,5 секунды sad.gif надо апгрейтить свой модуль

А может, компьютер тебе Upgrade-ить надо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.