hi all, i need your help. i want to use (a^b) mod c
but in matlab if i use mod((a^b),c);
it's return inf
because a,b,c are too big.
are you know how to do that with another way, in matlab?? for example use a loop ??

1 Kommentar

Oleg Komarov
Oleg Komarov am 29 Jun. 2011
- What do you mean by too big?
- Are they scalars?

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Jan
Jan am 29 Jun. 2011

1 Stimme

If b is not prime, but x * y:
(a^b) mod c = (a^x mod c)^y mod c
But if b is prime, this does not help to avoid the overflow. Then I'd try FEX:John's VPI or FEX:Ben Barrowes' Multiple Precision Toolbox.
EDITED: A loop method:
function r = ApowerBmodC(a, b, c)
r = 1;
for i = 1:b
r = mod(a * r, c);
end
Then "ApowerBmodC(1234, 5678, 1256)" replies 1112. For these numbers the "(a^x mod c)^y mod c" does not help, because 5678 = 2*17*167 and "mod(1234^2, 1256)^17" is 4.38e45 such that trailing figures are all zero due to rounding.

3 Kommentare

zikrullah muhammad
zikrullah muhammad am 29 Jun. 2011
thank you, but if b prime what must i do??
Jan
Jan am 29 Jun. 2011
Have you looked at the two posted links?
Sean de Wolski
Sean de Wolski am 29 Jun. 2011
VPI is back !!

Melden Sie sich an, um zu kommentieren.

Oleg Komarov
Oleg Komarov am 29 Jun. 2011

0 Stimmen

If you're looking for elementwise elevation to a power then:
mod(a.^b,c)

1 Kommentar

zikrullah muhammad
zikrullah muhammad am 29 Jun. 2011
i need loop, so the number not bigger than realmax
for example:
mod((1234^5678),1256)---> it's return NaN

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Types finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 29 Jun. 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by