如何在javascript中实现此数学方程式:
x + 2x + 3x + ... + nx = 100
实际上,我想找到 x 的值,但是我想要一个可以灵活地定义多少x的代码...
我没有运气尝试过这个
var x;
for (var n = 1; n <= 10, n++){
var cal = 100;
cal += (n * x)
console.log(cal)
}
答案 0 :(得分:3)
如果按以下方式重写方程式,则可以使算法更简单:
x*(1 + 2 + 3 + ... + n) = 100
现在,要查找x
的值,可以将x
设为主题:
x = 100 / (1 + 2 + 3 + ... + n)
因此,阻止您计算x
值的未知事物是1到n
中所有数字的总和(即(1 + 2 + 3 + ... + n)
)。我们可以使用for
循环来计算该值,然后使用它来评估x
的值:
var sum = 0;
var n = 4;
for(var i = 1; i <= n; i++) {
sum += i;
}
var x = 100 / sum;
console.log(x);
但是,您可以更有效地执行此操作。您可以利用一个事实,即n
从1到n
的总和为:
sum(n) = n*(n+1)/2
因此,您可以分解出x
并将其用于方程式:
x*sum(n) = x*(n*(n+1)/2)
因此,您的等式实际上是:
x*(n*(n+1)/2) = 100
以x
为主题将给您:
x = 100 / (n(n+1)/2)
因此,我们可以使用上面的公式来计算x
的值:
const n = 4;
const x = 100 / (n*(n+1)/2);
console.log(x);
答案 1 :(得分:1)
我认为应该是x = 100 / (n * (n + 1) / 2)
,请参考Arithmetic Progression
n = 4;
x = 100 / (n * (n + 1) / 2);
console.log(x);