I need to find the smallest number that divides all numbers from 1 to n.
The solution, of course is this:

*./ >: i. n

What I don't understand is why this solution seems to scale so poorly:

   6!:2 '*./ >: i.10000x'
0.326128
   6!:2 '*./ >: i.11000x'
1.00384
   6!:2 '*./ >: i.12000x'
4.133
   6!:2 '*./ >: i.13000x'
11.8082

When I perform similar calculation in Haskell it produces result in
negligible time, even when n = 100,000.

λ: foldr1 lcm [1 .. 100000]
695283836241707197000307586...

If I use a verb other than *. it runs very quickly, as expected.

What's so special about LCM?

Thanks,
Eugene
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to