Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 13:08   #1
Cagie
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 4
По умолчанию Excel mod и степени

Может вопрос уже и рассматривался, но всё же
Не подскажите как эксель заставить считать выражение вида:
66^139 mod 534

Заранее благодарен
Cagie вне форума Ответить с цитированием
Старый 05.12.2009, 14:25   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот так: =ОСТАТ(66^139;534)
только переполнение наступает, результат #число!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.12.2009, 14:44   #3
Cagie
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 4
По умолчанию

ну собственно это я и спрашивал)
как избежать переполнения?
66^139 возводится, но при подсчете мода переполнение =(
а реализовать обязательно нужно на экселе!

Последний раз редактировалось Cagie; 05.12.2009 в 15:11.
Cagie вне форума Ответить с цитированием
Старый 05.12.2009, 15:21   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ответ: 240

На VBA это считается примерно так:

Код:

Sub test()
    Dim n As Long
    a = 66: st = 139: m = 534: n = 1: d = 2
    While st > d
        n = n * (a ^ d)
        st = st - d
        n = n Mod m
    Wend
    n = n * (a ^ st) Mod m
    Debug.Print n
End Sub

Вычисления основаны на данном факте:
66^139 mod 534 = ((66^2)* 66^137) mod 534 = ((66^2 mod 534)* 66^137) mod 534
Таким образом, мы понижаем степень (вычисляя внутри цикла небольшие степени вроде 66^2 mod 534) до тех пор, пока Excel не начинает корректно вычислять значение 66^N

Последний раз редактировалось EducatedFool; 05.12.2009 в 15:27.
EducatedFool вне форума Ответить с цитированием
Старый 05.12.2009, 15:42   #5
Cagie
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Ответ: 240
Вычисления основаны на данном факте:
66^139 mod 534 = ((66^2)* 66^137) mod 534 = ((66^2 mod 534)* 66^137) mod 534
Таким образом, мы понижаем степень (вычисляя внутри цикла небольшие степени вроде 66^2 mod 534) до тех пор, пока Excel не начинает корректно вычислять значение 66^N
Большое спасибо)
В принципи нужно реализовать без ВБА
вот думаю, какой длинны у меня будет формула в экселе) собственно такую длинну и не прнял) слишком сложная ф-ция пишет)


Проблема оказалась еще хуже)
как оказалось при любом разложении ексель не хочет работать с такими огромными числами
с маленькими всё проще, разложил по вышеописанной схеме и он всё посчитал
В данном случае такое не получается. Есть ли какой-нибудь выход?

Последний раз редактировалось Cagie; 05.12.2009 в 16:19.
Cagie вне форума Ответить с цитированием
Старый 05.12.2009, 16:24   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно и формулами результата достичь:



Нужный результат найдёте в 70-й строке.

И вам надо обязательно ОДНОЙ формулой?
EducatedFool вне форума Ответить с цитированием
Старый 05.12.2009, 16:57   #7
Cagie
Новичок
Джуниор
 
Регистрация: 03.12.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Можно и формулами результата достичь:



Нужный результат найдёте в 70-й строке.

И вам надо обязательно ОДНОЙ формулой?
да, обязательно одной
прост здесь довольно много подобных чисел придется вычислять
Cagie вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mod в калькуляторе pinch000 Общие вопросы C/C++ 1 08.11.2009 02:44
ошибка в выражении mod Alkagolik Паскаль, Turbo Pascal, PascalABC.NET 6 03.08.2009 01:19
Помогите решить задачу с оператором MOD LenaPrikolava Помощь студентам 7 09.05.2009 15:23
ошибка с mod Kn793 Помощь студентам 2 16.07.2008 13:28
mod rewrite и .htaccess websteel Помощь студентам 2 01.05.2008 20:57