Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работать в Делфи с очень большими числами [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-разрядную версию.


Наверх

Титульная страница Поиск, карта сайта Написать письмо