在javascript中实现此数学方程式

时间:2019-06-27 10:07:49

标签: javascript math

如何在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)
}

2 个答案:

答案 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);