求和小于 J 中的参数的整数
Summing Ints less than an Argument in J
我在这个算法中使用 J,它的意思是取小于或等于参数的所有正整数的总和。
sum=: + +@:+/&:i.
有使用案例:
sum 3
6
有没有更有效的方法来做到这一点?我还是 J 的新手,我只是想知道你们将如何实现它。
您想要 (@:
) 整数列表 (i.
) 的总和 (+/
),直至参数。所以就这样写:
sum2 =: +/ @: i.
并记住列表从 0 到 (arg - 1),在获取列表之前递增参数:
sum2 =: +/ @: i. @ >:
相当高效:
timespacex'sum2 1e5'
0.000327 525376
timespacex'sum 1e5'
0.033216 525440
最高效的方法当然是使用公式-:@(*>:)
我在这个算法中使用 J,它的意思是取小于或等于参数的所有正整数的总和。
sum=: + +@:+/&:i.
有使用案例:
sum 3
6
有没有更有效的方法来做到这一点?我还是 J 的新手,我只是想知道你们将如何实现它。
您想要 (@:
) 整数列表 (i.
) 的总和 (+/
),直至参数。所以就这样写:
sum2 =: +/ @: i.
并记住列表从 0 到 (arg - 1),在获取列表之前递增参数:
sum2 =: +/ @: i. @ >:
相当高效:
timespacex'sum2 1e5'
0.000327 525376
timespacex'sum 1e5'
0.033216 525440
最高效的方法当然是使用公式-:@(*>:)