04.03.2018, 11:39 | #1 (permalink) |
Member
Регистрация: 14.12.2017
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Факториал n
Задача: |
04.03.2018, 11:39 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Решение этой проблемы можно ускорить, прочитав похожие темы Описать факториал. Delphi |
04.03.2018, 20:29 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Легко. Правда, с модулем Math и оператором cell разбирайтесь сами: у меня ничего такого нет, да и не надо (хоть бы Вы написали, что у Вас за реализация Паскаля! Они ведь, знаете ли, разные бывают).
Код:
Var Max_Cardinal,j,t:Cardinal; i:word; Function Nfact(n:word):Cardinal; var k:word; fact:Cardinal; begin if n=0 then fact:=1 else begin fact:=1; for k:=1 to n do fact:=fact*k; end; Nfact:=fact; end; Begin Max_Cardinal:=1; for i:=1 to 31 do Max_Cardinal:=Max_Cardinal*2; Max_Cardinal:=(Max_Cardinal-1)*2+1; Writeln('Max_Cardinal = ',Max_Cardinal); i:=0; While Nfact(i)<=Max_Cardinal/(i+1) do begin Inc(i); t:=Trunc(Exp(Ln(Nfact(i))/3)); j:=t-1; repeat Inc(j); until j*j*j-j>=Nfact(i); if j*j*j-j=Nfact(i) then Writeln(i,' ',Nfact(i),' ',j-1,'*',j,'*',j+1); end; Readln End. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|