![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как работать в Делфи с очень большими числами [D6, WinXP]
voron © (2004-10-23 00:05:00)У меня возникла проблема, может кто-то и подскажет:
Как работать с очень большими целыми числами (порядка 200-300 цифр)?? (Int64 не подходит)
Более конкретно: например мне нужно возвести 3 в степень 345, а из результата взять mod 5!
voron (2004-10-23 13:40:00) [1]Большое спасибо за советы!!!
Все получилось!
TUser (2004-10-23 13:33:00) [2]На алголисте полно материалов по этому делу, и на форуме там длинные числа - очень популярная тема
Vasya.ru (2004-10-23 13:26:00) [3]voron (23.10.04 0:05)
Поищи в интернете или библиотеке материалы по длинной арифметике - работа с большими числами через массивы - там не сложно, часа за 2 во всем разберешся
GuAV (2004-10-23 13:21:00) [4]Defunct © (23.10.04 5:19) [9]
Да, Вы правы.
Defunct (2004-10-23 05:19:00) [5]> GuAV © (23.10.04 01:44) [5]
Полагаю имелось в виду:
procedure TForm1.Button1Click(Sender: TObject);
var I, R: Integer;
begin
R:=1;
for I:=1 to 346 do
begin
R:=R*3;
R:= R mod (5*4*3*2*1 );
end;
R := R mod 5;
ShowMessageFmt('R = %d',[R]);
end;
Defunct (2004-10-23 05:17:00) [6]> GuAV © (23.10.04 01:44) [5]
LOL
Результат этой функции R=72 всегда, независимо от кол-ва итераций ;>
XProger (2004-10-23 04:53:00) [7]Сложение, умножение и деление столбиком, как во втором классе.
Или забыл? ;)
Длинная арифметика называется...
GuAV (2004-10-23 01:45:00) [8]Grundic © (23.10.04 1:37) [3]
Можно пояснить?
Можно сразу делать mod т.к. старшие разряды не влияют на младшие при умножении :)
GuAV (2004-10-23 01:44:00) [9]Упс... я факториал не заметил во как:
procedure TForm1.Button3Click(Sender: TObject);
var I, R: Integer;
begin
R:=1;
for I:=1 to 345 do
begin
R:=R*3;
R:=R mod 5*4*3*2*1;
end;
ShowMessageFmt('R = %d',[R]);
end;
Megabyte (2004-10-23 01:39:00) [10]Я как-то факториал 100! считал, использовал массивы.
Grundic (2004-10-23 01:37:00) [11]
> GuAV
R:=R*3;
R:=R mod 5;
? :/
Я в таком состоянии в математике не силен. Можно пояснить?
Это не притенции - честно-честно. :) Просто интересно...
ЗЫ: прям рифма! (:
GuAV (2004-10-23 01:29:00) [12]voron (23.10.04 0:05)
возвести 3 в степень 345, а из результата взять mod 5
procedure TForm1.Button3Click(Sender: TObject);
var I, R: Integer;
begin
R:=1;
for I:=1 to 345 do
begin
R:=R*3;
R:=R mod 5;
end;
ShowMessageFmt('R = %d',[R]);
end;
:)
palva (2004-10-23 00:12:00) [13]Использовать какую-нибудь библиотеку. Наверняка их много. Только брать 32-разрядную версию.