# Diffie-Hellman key exchange explained in color

It took me a rewatch to get it, but then I got it.

# Largest Remainder

Largest Possible Remainder problem in racket:

```;;lr = largest remainder so far lrd = divisor with largest remainder
(define (largest-remainder n d (lr 0) (lrd 0))
(cond
[(= d 0) (values lr lrd)] ;;catch cases like n = 6, d = 3
[(> lr d) (values lr lrd)] ;;stop when d is < largest remainder
[(> (modulo n d) lr)
(largest-remainder n (sub1 d) (modulo n d) d)] ;;save new largest remainder
[else
(largest-remainder n (sub1 d) lr lrd)])) ;;iterate with d-1
```

Common Lisp translation:

```(defun largest-remainder (n d &optional (lr 0) (lrd 0))
(cond
((<= d 0) (values lr lrd))
((< d lr) (values lr lrd))
(t (let ((r (rem n d)))
(if (> r lr)
(largest-remainder n (1- d) r d)
(largest-remainder n (1- d) lr lrd))))))
```

Iterative in python.

```
def largest_remainder(n,d):
lr = 0
lrd = 0
while (d >= lr) and (d > 0):
if (n % d > lr):
lr = n % d
lrd = d
d -= 1
return (lr,lrd)

print largest_remainder(20,10)
print largest_remainder(6,3)
```

# Two Puzzles

I forgot where I got this but it’s pretty cool.