modularized prime factors in python for use in question 5
restricted the fib function (generates an infinite list of fibonnaci numbers) to only output integers, as opposed to integrals. This removed a huge amount of memory usage as haskell had to generalize the data type (It would not resolve). Trying to generate the 40th fibonnaci number would take up more than 20 gigs of ram... Now it is instantaneous.