总和I小于J中的参数

时间:2015-03-25 22:55:05

标签: sum j

我正在使用J这个算法,它意味着将所有正数的总和小于或等于参数。

  sum=: + +@:+/&:i.

有用例:

   sum 3
6 

有更有效的方法吗?我还是J的新手,我只是想知道你们将如何实现这一点。

1 个答案:

答案 0 :(得分:7)

您希望(+/)的总和(@:)整数列表(i.)直到参数。所以写下:

sum2 =: +/ @: i.

并记住列表从0到(arg - 1),在获取列表之前递增参数:

sum2 =: +/ @: i. @ >:

效率很高:

timespacex'sum2 1e5'
0.000327 525376
timespacex'sum 1e5'
0.033216 525440

当然,最有效的方法是使用公式-:@(*>:)