Function NaiveGCD(a,b) |
best ←0 if d|aandd|b: best←d return best |
Runtime approximatelya+b.
Very slow for 20 digit numbers.
Euclidean Algorithm
Function EuclidGCD(a,b) |
if b=0: return a a′←the remainder whenais divided byb return EuclidGCD(b,a′) |
Each step reduces the size of numbersby about a factor of 2.
Takes about log(ab)steps.
GCDs of 100 digit numbers takes about 600 steps.
Each step a single division.
Fibonacci Number:
FibRecurs(n) |
if n≤1: return n else: |
Too slow!
Better:
FibList(n) |
create an array F[0...n] F[0]←0 F [i]←F[i−1] +F[i−2] return F[n] |
T(n)=2n+2. SoT(100)=202.
Easy to compute.