【发布时间】:2018-04-25 00:17:18
【问题描述】:
我正在尝试在 Bash 中执行此操作:
read n
echo int(math.ceil((math.sqrt(1 + 8 * n) - 1) / 2))
当然,这不是有效的语法,但我只是把它放在那里,这样你就可以知道我在做什么。
有没有一种简单的方法可以把它变成有效的 Bash?
【问题讨论】:
-
bash中肯定没有sqrt运算符。 -
我必须自己写sqrt函数吗?
-
不确定是否有帮助,但由于
(8n + 1)是奇数,那么如果sqrt(8n + 1)是整数值,它也一定是奇数。因此,减去(1)并除以(2)将始终是整数。所以如果(n)对于任何整数(k)可以表示为k(k + 1)/2,那么结果就是一个整数。否则,在整数部分加一。 -
@BrettHale 是的,绝对是一种解决方法;想概括一下,如果我想在未来计算 sqrt,我就可以
-
我的评论并没有真正帮助,因为发现
(k)值与您原来的问题基本相同!
标签: bash math syntax echo stdout