In the following equation x, y, and n are positive integers.
What is the least value of n for which the number of distinct solutions exceeds four million?
This is “just” problem 108 on steroids. I put just in quotes because I was going to whip up a quick solution to this and then head out, and I ended up spending all day on this instead. Up until now, it’s taken longer to blog the solutions than come up with them, but this one took a ridiculously long time to solve.
Although this gives the correct answer, I feel like I’m giving up without having come up with a good solution by just filtering through all products of primorial numbers, but it’s nearly 4am, and I’m not going to be able to sleep unless I get some sort of solution. Oh well. That’s what I get for going after a problem that looked interesting. I should go through the forum post for this problem to see if I can learn how to solve this the right way. Maybe after I graduate and/or drop out of grad school :-).
let factors n = let rec loop n m ms = if n % m = 0I then loop (n/m) m (m::ms) elif n > m then loop n (m+1I) ms else ms loop n 2I  let numFactors n = factors n |> Seq.countBy(fun x->x) |> Seq.map (fun (a,b) -> b+1) |> Seq.reduce(*) let numSolutionsTimesTwo n = numFactors (n*n) let ans = primorial |> Seq.find (fun n -> (numSolutionsTimesTwo n) > 8000000)
Just as an aside, I started working through project Euler problems because I missed programming. I’ve been doing all math all the time since starting grad school; I was hoping this would be a bit more programming intensive, but the higher numbered problems seem to be 99% math and 1% programming. I’ll work through more of the lower numbered problems, which will push me to learn more F# constructs without feeding into my grad school ennui, but I really ought to find a nice open source project to bang on.