Возведение в степень в модулярной арифметике (функция Power Mod)
Почти так же можно вычислить и последнюю тысячу знаков.
Mod[
9
^
(
9
^
9
),
10
^
1000
]
//Timing
{
260.64
Second,
164378947574778447311427807670372670
0326359025082234292387746462391127
9751529028988405927046285969119001418
842032015433264756391857718597649
204912230323811027210136918
3684943285741373762637969125845614123744406
01020026085922354
10622770718702230402359356419151296996286668460066302
9835137
9027215796574565344432784903341994543575575416975966278964106
12
7038799025612835366795058993611717249028581457173391518760
2283281383558665788995350272253954345165983917336427507154331
749386377957650223307
168958637197192110578737857336943212457
7155212755139983177854767167859
12996450672962748373653022152
34320507478340927905653712738326405359097
6996351343597753799
283680752817548382724478144536940979972304718417625
894479515
4018072624283659761429188348967918815377285476781074966161266
1854762666853235529005571888491679885547006847358268508973918
700851075402818853925349052912288203971972
4032235787006073283877358282
617004315060225040660196165699439754361026855266374036682906
1901749234943241787
99359681422627177289
}
Вычисление, как видите, заняло более четырех минут (260.64 секунды). Но гораздо быстрее результат можно получить вот так.
PowerMod[
9.9
^
9
,
10
^
1000
]
//Timing
{
0.015
Second,
1643789475747784473114278076703726700
...
2627177289
}
(Здесь середина пропущена.) Это вычисление заняло лишь 0.015 секунды. Это более чем в тысячу (точнее, в 17376) раз быстрее!
Пример 7.4. Графики функции Power Mod.
Давайте теперь построим несколько графиков функции PowerMod. Поскольку это функция двух аргументов, построим изображения поверхности z = PowerMod[x, у]. Для этого используем функцию Plot3D.
А вот вид издалека.