That, I suspect, can be blamed mostly on the abysmally slow extended precision integers in J, and the fact that *. must manipulate these extended precision integers more often than other verbs.
Indeed, If you remove the 'x', it runs extremely fast. ________________________________ From: Programming <programming-boun...@forums.jsoftware.com> on behalf of Eugene Nonko <eno...@gmail.com> Sent: Sunday, March 10, 2019 9:00 PM To: programm...@jsoftware.com Subject: [Jprogramming] LCM performance 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm