Страница: 1 |
Страница: 1 |
Вопрос: Чем работать с большими числами ?
Добавлено: 26.04.05 19:43
Автор вопроса: avkiev | ICQ: 226072
Подскажите, пожалуйста, какую библиотеку можно использовать для работы с большими числами ? Числа примерно порядка 2^500.
Нашел только Chip8086XT, но он поддерживает только арифметику, а мне нужно и корень брать, и в степень возводить...
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 26.04.05 20:00
Да, кстати, тоже интерестно, я щас занимался этим.
Наверное числа можно в string запихивать. да, арифметика и даже возведение в целочисленную степень легко организовывается алгоритмически. Как ни странно, нас во втором кажись классе учили главное догадаться. а вот остальное... тоже интерестно
Номер ответа: 2
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #2
Добавлено: 26.04.05 20:03
Понятно, что можно сделать самому, просто не хочется заново изобретать велосипед. Да и вопросы быстродействия становятся критическими, оптимизация нужна...
Номер ответа: 3
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 26.04.05 22:13
Корень брать предлагаю так же как и при вычислении в уме: сначала ищем ближайшее, которое знаем, а потом накидываем (или скидываем) "на глазок". 8))))
Ну типа пошутил...
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 26.04.05 22:15
ага... а корень Х будем искать, перебирая все числа У и если У*У=Х то это и есь его корень ну или там в степень 0.5 возвести )))))))
Номер ответа: 5
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #5
Добавлено: 27.04.05 00:47
Не ребята, не все так просто. Чтобы написать такую библиотеку и отладить - понадобится не одна неделя.
Неужели нет готового решения ?
Номер ответа: 6
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #6
Добавлено: 27.04.05 01:18
не рамблере не искал? а на гугле?
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 27.04.05 02:12
Если числа целые и точность имеет значение, тогда "длинна арифметика". String это, конечно, извращение, а вот массив байт - нормальное.
Если числа просто большие и не обязательно целые и точность некритична, тогда экспоненциальный вид, т.е. мантисса и экспонента хранятся отдельно.
Если числа большие, точность важна и могут быть нецелыми, тогда длинная арифметика с числителем и знаменателем отдельно.
Существует алгоритм быстрого расчета корня, т.н. "вавилонский метод"
Номер ответа: 8
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #8
Добавлено: 27.04.05 10:25
Числа целые (натуральные), точность важна.
На первых порах подошел бы и Chip8086XT, но он работает только с десятичными числами, а мне нужно работать с хексом.
Т.е. "36F8A7DE451234567890ABCDEF2345" / "7856341289FBDA" = ?
Нашел три библиотеки: BigInt, GMP, Miracl. Но все они заточены под все что угодно, кроме VB.
Ясно, готового VB-решения не существует, придется работать с этими монстрами на C