求和小于 J 中的参数的整数

标签 sum 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 中的参数的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268039/

相关文章:

php - 我可以按多列的总和对 mySQL 数据库记录进行排序而不显示总和本身吗?

j - 如何在J中的同一行中编写多个语句

fonts - jhs(J HTTP Server) 中可以进行字体配置吗?

c++ - J编程语言中的数组

arrays - 对单元格内的数组求和

c# - 在for循环中添加随机生成的数字的总和

assembly - 从 Assembly x86 NASM 内存中读取 16 位

python - 对 python dict 中的值求和,除了一个

j - 如何重写J中的减半函数?

matrix - 使用 J 查找 4 个邻居