|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.07.2012, 17:54 | #1 |
Форумчанин
Регистрация: 26.07.2011
Сообщений: 376
|
Быстрое возведение в степень.
Доброго времени суток. Требуется помощь с написанием программы. Ниже прилагаю алгоритм решения и свои наработки.
(Условие)Допустим что нам нужно вычислить точное значиние a^n для достаточно большого значение N. Алгоритм Если N ( степень ) четное, тогда a^n=(a^n/2)^2. А если N нечетное, то тогда a^n = a*(a^n/2)^2. В любом случае значение показателя степени уменьшено наполовину, а вычисление сведено к, самое большее, двум операциям умножения. Таким образом, для вычисления конечного значения будет достаточно О(lg(n)) операций умножения. Псевдокод. Код:
Код. Код:
Заранее благодарен за помощь.
Люблю на ты.Я человек простой
|
19.07.2012, 19:06 | #2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
n/2 - double
n div 2 - int если память не изменяет. Кажись еще так можно round(n/2) Ну а return легко заменить выходом из функции exit; Result := value; exit; |
19.07.2012, 19:55 | #3 |
Форумчанин
Регистрация: 26.07.2011
Сообщений: 376
|
Благодарю, полезли новые ошибки =) будем разбираться.
Люблю на ты.Я человек простой
|
19.07.2012, 21:55 | #4 |
Форумчанин
Регистрация: 26.07.2011
Сообщений: 376
|
Ну собственно вот, что получилось.
Код:
Люблю на ты.Я человек простой
|
19.07.2012, 22:26 | #5 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,690
|
как-то так:
Код:
|
19.07.2012, 22:34 | #6 |
Программист
Форумчанин
Регистрация: 27.02.2009
Сообщений: 505
|
А не проще ли так?
Код:
there are no limits when you're software engineer
|
20.07.2012, 02:24 | #7 |
Форумчанин
Регистрация: 26.07.2011
Сообщений: 376
|
насколько помню а^b , а не b^a.( просто потому, что основание то логарифма по формуле а )
Код:
Такого рода задачи, в основном возникают в криптографии при проверке числа на простоту. Проблемы с точностью не позволяют воспользоваться даной форумулой Код:
Могу если захотите привести пример задачи, и возможные способы её реализации.
Люблю на ты.Я человек простой
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возведение в степень | XYLIGANXYL | Общие вопросы по Java, Java SE, Kotlin | 7 | 17.09.2016 15:20 |
возведение в степень | [CODER] | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 14.04.2014 10:18 |
Быстрое возведение в степень.(ошибка) | Mahoyn93 | Общие вопросы C/C++ | 6 | 15.04.2012 21:58 |
Возведение в степень. | Drakulov | Свободное общение | 30 | 01.03.2011 16:35 |
возведение в степень | ILNARM | Паскаль, Turbo Pascal, PascalABC.NET | 16 | 16.10.2009 23:04 |