所以说我有这些变量:
m
是以位为单位的可用内存量k
是一个分割因子j
是另一个划分因子,作为单独的变量保存,而不是与k
x
是我们要计算的值。z
是我们想要最接近的值2^x
然后我们有
let z = (((m / k) / j) / x)
例如,假设我们有这个:
m = 2000000
k = 5
j = 10
x = ?
z = ?
然后我们有
let z = ((2000000 / 5) / 10) / x
我想弄清楚x
给出的内容z
应该尽可能接近 2 的幂x
。我目前这样做的方式是插入数字并尝试使它们接近匹配。但我想知道一种以编程方式解决这个问题的通用方法。但例如,我可能会尝试插入x = 10
,这等于:
4000 = ((2000000 / 5) / 10) / 10
然后2¹⁰ = 1024
是接近 4000,但我不知道会更接近。尝试x = 11
给出:
3636 = ((2000000 / 5) / 10) / 11
并且2¹¹ = 2048
,x = 11
还有一个更好的解决方案。
想知道如何以编程方式解决这个问题。我试图将方程式分解出来,但是自从我这样做以来已经有一段时间了,所以我不知道。
z = (((m / k) / j) / x)
x * z = (m / k) / j
j * (x * z) = m / k
k * (j * (x * z)) = m
...
现在有点迷茫,不知道如何做到这一点:
f(k, j) = ... => [ x, z ]
一般来说,我试图弄清楚如何以编程方式求解方程。仅仅看到一个实现就可以让我理解而不会使其过于宽泛。
我目前所做的基本上是进入调试器并输入一些 JavaScript 来查找值,但必须有更好的方法。