To work out powers mod n, use repeated squaring | Tricki



Quick description

A fact of fundamental importance in computational number theory is that calculating a^r mod n can be done efficiently on a computer. The reason is simple: by repeatedly squaring a, one can work out a^2, a^4, a^8, ... and then other powers a^r can be calculated by taking products chosen according to the binary expansion of r.

Prerequisites

Modular arithmetic

Example 1

One example is enough to give the idea. Let us work out 3^{37} mod 53. First, we repeatedly square 3 mod 53 until we have worked out 3^{2^k} for every k such that 2^k\leq 37. We get 3^2=9; 3^4=9^2=81\equiv 28; 3^8\equiv 28^2=784\equiv -11 (because 15\times 53=795); 3^{16}\equiv 121\equiv 15; 3^{32}\equiv 225\equiv 13. Next, we observe that 37=32+4+1. Therefore,

3^{37}\equiv 13\times 28\times 3=13\times 84\equiv 13\times 31=403\equiv 32.


Read full article from To work out powers mod n, use repeated squaring | Tricki


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts