Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с громадными числами, Нужно создать алгоритм на Delphi 
:(
    Опции темы
Shmity
Дата 2.10.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Вообщем, если в кратце, требуется разработать алгоритм для работы с числами приблизительно с 50000 знаков, без потери последних на Delphi. Вроде как можно числа записывать в динамическую память, но как это сделать не знаю. Всем кто поможет буду оч. признателен.
PM MAIL   Вверх
Alexeis
Дата 2.10.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Какой алгоритм? Числа лучше в динамическом массиве хранить. Если задача не академическая, то проще заюзать что-то готовое.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BaD_SeCt0R
Дата 2.10.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 4
Всего: 18



Тогда число будет храниться так: a[0]*2^8+a[1]*2^16+...+a[n]*2^(n+1)*8, где a - это динамический массив.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Shmity
Дата 2.10.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



BaD_SeCt0R, 
Alexeis,  спс
PM MAIL   Вверх
Gershkovich
Дата 2.10.2007, 16:51 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: 0
Всего: 2



Shmity, Не знаю поможет тебе моя идея или нет 


Мы в универе на лабораторных занятиях перемножали большие числа.

Каждое число - это массив байтов
причем каждый элемент должен быть в интервале 0-9,
т.е. как бы представлял собой десятичную цифру.

Имея два таких массива перемножали столбиком, как это делают в школе.
Только промежуточные произведения записывали не на бумагу а во временные массивы.

Может тебя такой подход натолкнет на продуктивные мысли...
PM MAIL   Вверх
Shmity
Дата 2.10.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



Gershkovich, спс оч. интересная и полезная мысль надо ее доработать
PM MAIL   Вверх
BaD_SeCt0R
Дата 2.10.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 4
Всего: 18



Цитата(Gershkovich @  2.10.2007,  16:51 Найти цитируемый пост)
Каждое число - это массив байтов
причем каждый элемент должен быть в интервале 0-9,

Shmity, при вычислениях очень удобный, но весьма не экономичный для памяти 
прием. Если уж так, то я бы посоветовал (если уж не в бинарке) хотя бы хранить два знака в одном байте. Известно, что число в диапазоне 0..9 с легкостью укладывается в 4 бита. Отсюда и предложение. 9=$9. Мы экономим память уже в 2 раза!



--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Shmity
Дата 3.10.2007, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.10.2007

Репутация: нет
Всего: нет



BaD_SeCt0R, сложность программы заключаеться не в хранении(сколько места и как), а в скорости работы проги в целом(желательно не более минуты общее время работы проги), так что мне пойдут любые варианты. Да и операции у Gershkovich,  будет чуть попроще реализовать. А еще такой вопрос уже ко всем: можно ли хранить и производить операции с такими громадными числами если выделить для них память c помощью getmem? И как потом с ними производить операции(если можно хранить, желательно хоть на каком нибудь малюсеньком примере, а то пробывал так делать делфи выдает ошибку постоянно)?

PM MAIL   Вверх
hihi
Дата 3.10.2007, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



ребята, извините за офтоп, просто  сккажите, изнываю от любопытсва, для каких задач это требуется?
PM MAIL   Вверх
Alexeis
Дата 3.10.2007, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Shmity, зачем нужен GetMem? SetLength() меняет размер динамического массива и выделяет столько памяти сколько нужно.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Kuvaldis
Дата 3.10.2007, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: нет
Всего: 61



Shmity, 

http://algolist.manual.ru/maths/longnum.php
Читай и разбирайся, здесь и теория, и практика smile


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Esperito
Дата 3.10.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 2.9.2007

Репутация: 1
Всего: 3



Цитата(hihi @ 3.10.2007,  07:02)
ребята, извините за офтоп, просто  сккажите, изнываю от любопытсва, для каких задач это требуется?

На этом основана вся современная криптография.
PM MAIL   Вверх
Alexeis
Дата 3.10.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Esperito @  3.10.2007,  20:38 Найти цитируемый пост)
На этом основана вся современная криптография. 

 Ну не сказал бы что там нужны настолько большие числа, обычно кодирование идет блочно. Если ключ даже 1024 бита, то это примерно 300 знаков, ну пусть даже 500 знаков нужно, но 50000. 50000 это ж на 2 порядка больше.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Esperito
Дата 4.10.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 2.9.2007

Репутация: 1
Всего: 3



Цитата(Alexeis @ 3.10.2007,  21:41)
Ну не сказал бы что там нужны настолько большие числа, обычно кодирование идет блочно. Если ключ даже 1024 бита, то это примерно 300 знаков, ну пусть даже 500 знаков нужно, но 50000. 50000 это ж на 2 порядка больше.

Для формирования ключа нужно вычислять очень большие простые числа (в PGP например).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0541 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.