![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Вопрос состоит из 2 частей.
В C# есть такая штука: структура System.Numerics.BigInteger для работы с большими числами. Вот только там нет среди методов функции взятия корня. Степени только целые есть. И какой же метод использовать, если нужно взять корень? Ну допустим, что корня нет. Тогда мы можем сделать таблицу со значениями квадратов чисел. И дальше искать по ней на совпадение. Например, если число имеется в таблице, то мы знаем, что корень из него - целое число. Насколько быстр поиск по такой отсортированной таблице? Например, у меня есть таблица квадратов чисел от 1 до миллиарда, и мне нужно проверить, есть ли там это число. Как лучше такую таблицу хранить в C#, и как искать по ней? Быстрее ли это будет, чем брать корень? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
![]()
Я бы в Hashtable хранил. Ключ - число, значение - корень.
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Похоже, все-таки это не лучший метод - с таблицей. К тому же потестировал скорость вычислений с большими числами, и оказалось, что PHP примерно в 2 раза быстрее C#.
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
![]()
Дело не только в корне - даже умножение более медленное, чем на PHP.
|
![]() |
![]() |
![]() |
#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 |