28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
||||||
1 | ||||||
Реализовать класс длинной арифметики13.07.2012, 15:49. Показов 9147. Ответов 24
Метки нет (Все метки)
Начал писать класс длинной арифметики. Пока готов только метод для умножения больших чисел:
1. Прокоментируйте мой код. Может что-то можно сделать "умнее". А такое полюбому есть) 2. Подскажите где можно проверить уменожив числа типа "47835634765783465783465783647665464" Сейчас займусь делением.
0
|
13.07.2012, 15:49 | |
Ответы с готовыми решениями:
24
Вычисление факториала с помощью длинной арифметики Реализация длинной арифметики: исправить код Оптимизация класса для длинной арифметики Класс длинной арифметики |
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
13.07.2012, 16:08 | 2 |
1
|
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
||||||
13.07.2012, 16:18 [ТС] | 3 | |||||
0
|
9 / 9 / 1
Регистрация: 09.05.2012
Сообщений: 36
|
||||||
13.07.2012, 17:07 | 4 | |||||
Вообще я считаю калькулятор с большими числами надо херачить в строках.
ну типа
1
|
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
|
13.07.2012, 18:34 [ТС] | 5 |
При каждом изменении строки создается новые объект string, а старый продолжает висеть в памяти(если я правильно понимаю). И со временем память будет забиваться мусором.
0
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
||||||
13.07.2012, 19:53 | 6 | |||||
Ни в коем случае!!! За такую ересь на костре жечь!
Пример BigInteger:
Сборщик рано или позно все подчистит, но затраты на преобразование и постоянное выделение памяти в куче будут велики.
1
|
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
|
14.07.2012, 01:23 [ТС] | 10 |
0
|
9 / 9 / 1
Регистрация: 09.05.2012
Сообщений: 36
|
|
14.07.2012, 09:42 | 11 |
0
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
14.07.2012, 10:26 | 12 |
Работу со строками как с числами тоже сложно к хардкору отнести. Вполне допустимое решение для студентов троечников, но не более.
Настоящий маньяк может пойти несколькими путями: - Преобразовать число к 255-ричной системе счисления, запихать его в массив байт и работать как в алгоритме со строками. Есть существенная разница в скорости и потреблении памяти между (byte, byte) => byte и (byte.Parse(string), byte.Parse(string)) => byte.ToString() - Получить просветление посмотря на реализацию BigInteger. Преобразовать число в двоичную форму и запихнуть полученное число в uint[] не забыв положить первые четыре байта в int, ибо знаковое. Получим выйгрыш в скорости простых операций по сравнении с первым вариантом. - Перейти с шарпа на питон. - Придумать что-нибудь не менее изощренное. А строки это так. Детишкам забавляться
2
|
9 / 9 / 1
Регистрация: 09.05.2012
Сообщений: 36
|
|
14.07.2012, 14:08 | 13 |
Я не думаю, что автор данного топика является гуру-программистом. И ему не помешало бы придумывать что то свое, а не пользоваться готовыми библиотеками.
1
|
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
|
14.07.2012, 14:24 [ТС] | 14 |
Ну так я и придумываю что-то своё С байтовым массивом никогда не встречался ещё
0
|
Jupiter
|
14.07.2012, 14:27
#15
|
0
|
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
|
|
14.07.2012, 15:11 | 16 |
Не по теме: Ну да, там побыстрее длинноарифметика работает. Хотя обратная польская запись выражений отпугнет любого неофита. Скобочки опять же, сотни, сотни и сотни сотен скобочек - это намного хуже чем сотни подчеркивайний и тысячи отступов в питоне, наверное...:D Спорный вопрос. Извечное противостояние прикладного и фундаментального. ИМХО лучше научиться работать с тремя готовыми библиотеками, чем потратить время на написание заведомо худшего аналога одной из них.
1
|
9 / 9 / 1
Регистрация: 09.05.2012
Сообщений: 36
|
|
16.07.2012, 08:59 | 17 |
ИМХО, лучший вариант написать самому что-то, хотя и не лучший аналог - зато сам. Потом посмотреть как это реализовано в оптимизированных библиотек. И уже использовать ее (ну, в смысле эту самую библиотеку)
0
|
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
|
16.07.2012, 16:32 [ТС] | 18 |
Было бы неплохо если бы хоть кто-то прокоментировал мой код
0
|
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
|
|
27.11.2012, 19:17 | 19 |
В Python. Там можно вычислять как минимум до 100000! (факториал, кто не понял). Больше просто не пробовал.
0
|
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
|
|
28.11.2012, 00:09 [ТС] | 20 |
0
|
28.11.2012, 00:09 | |
28.11.2012, 00:09 | |
Помогаю со студенческими работами здесь
20
Реализация длинной арифметики Объясните код длинной арифметики Бенчмарк для длинной арифметики Ошибка в реализации длинной арифметики Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |