Factorization diagrams in Haskell
mathlesstraveled.com
mathlesstraveled.com
You can view the first 100 diagrams in a grid or view the diagram for the N of your choice. There's also an option to view an alternative diagram where the drawing starts with the smallest prime instead of the smallest.
It actually uses the last prime drawn, so it's only useful in 'smallest first' mode. That ought to be fixed, but I was lazy about it.
Colorizing the image based on the largest prime makes the pattern intelligible a little bit longer, before it becomes impossible to tell the big primes apart.
You know about Math.PI?
cabal install arithmoi
cabal install diagrams
Copy all the code from the blog post into a file (let's call it factor.hs). At the end of that file, add: main = defaultMain $ factorDiagram YOUR_NUMBER
Then run: runhaskell factor.hs -o image.png -w 400 tar xjf factors.mp3
It extracts to a directory named 'factors' to about 30 mb total.So express the number as a sum of numbers with factors drawn from that set, and draw a several diagrams, one for each summand. A quick bit of Python confirms that every number under 14925 can be expressed as the sum of no more than three such numbers in the most obvious way possible (ie using a greedy algorithm).
For example, you might write 9999 as 9800 + 196 + 3, all of which have nice factorization diagrams.
EDIT: No.
Proof. Fix a positive integer k. How many k-tuples of such numbers are there, whose sum is at most x? (For this to work, there would always need to be at least x of them.)
If (2^a_1 + 3^b_1 + 5^c_1 + 7^d_1) + ... + (2^a_k + 3^b_k + 5^c_k + 7^d_k) <= x, then all the exponents are at most log_2(x). So the number of all such sums is at most [log_2(x)]^(4k). And that is asymptotically less than x.
EDIT 2: But I'm sure the required k grows pretty slowly. This would be a workable technique for very large numbers indeed.