|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.12.2009, 20:36 | #1 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
корень из большого числа BigInteger
Вопрос состоит из 2 частей.
В C# есть такая штука: структура System.Numerics.BigInteger для работы с большими числами. Вот только там нет среди методов функции взятия корня. Степени только целые есть. И какой же метод использовать, если нужно взять корень? Ну допустим, что корня нет. Тогда мы можем сделать таблицу со значениями квадратов чисел. И дальше искать по ней на совпадение. Например, если число имеется в таблице, то мы знаем, что корень из него - целое число. Насколько быстр поиск по такой отсортированной таблице? Например, у меня есть таблица квадратов чисел от 1 до миллиарда, и мне нужно проверить, есть ли там это число. Как лучше такую таблицу хранить в C#, и как искать по ней? Быстрее ли это будет, чем брать корень? |
08.12.2009, 14:26 | #2 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Я бы в Hashtable хранил. Ключ - число, значение - корень.
|
08.12.2009, 18:09 | #3 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Похоже, все-таки это не лучший метод - с таблицей. К тому же потестировал скорость вычислений с большими числами, и оказалось, что PHP примерно в 2 раза быстрее C#.
|
08.12.2009, 18:30 | #4 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Вот готовый BigInteger на C#. В нем есть метод sqrt, посмотри как там сделано и напиши свой метод.
http://www.codeproject.com/KB/cs/biginteger.aspx Документация: http://groups.ist.utl.pt/meic-padi/p...ntegerDoc.html Если не понравился класс, можешь сам посчитать, вот описания методов: http://en.wikipedia.org/wiki/Methods...g_square_roots http://en.wikipedia.org/wiki/Newton's_method Последний раз редактировалось Hollander; 08.12.2009 в 18:33. |
08.12.2009, 19:18 | #5 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Дело не только в корне - даже умножение более медленное, чем на PHP.
|
09.12.2009, 11:35 | #6 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Ты спрашиваешь, что быстрее или как сделать? Ну возможно, что php быстрее считает, так что? Скорее всего есть другие платформы(возможно Java) где это еще быстрее.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
кубический корень числа | UnrealSP | Помощь студентам | 0 | 02.11.2009 18:04 |
Кубический корень от отрицательного числа | Vito89 | Помощь студентам | 9 | 29.09.2009 14:40 |
корень произвольной степени из большого числа с помощью BCMath | motorway | PHP | 8 | 25.09.2009 18:50 |
Как вычислит корень из числа? | Paul_AG | Общие вопросы C/C++ | 6 | 04.04.2009 14:47 |