Algorithms

Fibonacci Numbers, and some more of the Euclidean Algorithm and RSA.

Fibonacci Numbers, and some more of the Euclidean Algorithm and RSA.

Mike
We define the Fibonacci Sequence, develop a formula for the entries. We then use that to establish bounds on the growth of the sequence. We use that to prove a bound on the number of division operations required to compute the Euclidean Algorithm. Finally, we finish by continuing our discussion of the RSA algorithm and introducing the Golden Mean.
Factorization, Ideals and More Euclid!

Factorization, Ideals and More Euclid!

Mike
In this entry we begin by proving the correctness of the Euclidean Algorithm, then we discuss factorization in rings. We give an example of factoring into irreducibles in two distinct ways. We then define Unique Factorization Domain, Principal Ideal Domain and Euclidean Domain. We then prove that an ED is a PID and a PID is a UFD. We finish by explaining the RSA encryption algorithm.
The Euclidean Algorithm, and More

The Euclidean Algorithm, and More

Mike
We continue our investigation into rings and fields. We finish by explaining the Euclidean Algorithm. We also give a python implementation which, for any two positive integers, a and b, returns gcd(a,b) and the pair of integers, s and t, such that as + bt = gcd(a,b).
Parallel Sorting in Theory and in Practice III

Parallel Sorting in Theory and in Practice III

Mike
As promised, the last of a three-part series of entries on sorting in parallel. Here we present a parallel implementation of merge_sort which runs in O(nlog_2(n)) time and achieves fairly good parallelism.
Parallel Sorting in Theory and in Practice II

Parallel Sorting in Theory and in Practice II

Mike
As promised, this is the second entry on parallel sorting. In this entry, we’ll implement merge_sort, and then give two different ways to make it run in parallel. The first one will be a bit simpler than the second one.