You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解含Σ求和函数的代数方程:高效替代暴力法的方案

求解整数x、y满足求和方程的优化方案

问题说明

需找到满足以下方程的整数x、y(x、y取值范围为1000到10000):

7405
21000 = Σ (x * (1 - 1/y)^n)
       n = 1

注:原方程标注为210000,但结合代码逻辑及输出结果,推测应为21000,否则解的x值会远超出指定范围。

当前采用暴力枚举法效率极低,且浮点数计算导致结果出现20999.999999999996这类近似值,无法区分是精度误差还是真实值。

现有代码问题

  • 双层循环枚举x、y,且每次计算需循环7405次求和,时间复杂度极高。
  • 浮点数运算存在精度限制,无法准确判断结果是否为精确解。

优化方法

1. 简化求和公式,消除循环计算

该求和是等比数列求和,首项为x*(1-1/y),公比r=(1-1/y),项数7405项,求和公式可简化为:
$$S = x \cdot (y-1) \cdot \left(1 - \left(\frac{y-1}{y}\right)^{7405}\right)$$
此公式可直接计算结果,无需循环求和,性能提升几个数量级。

2. 缩小枚举范围

当y足够大时,(y-1/y)^7405趋近于0,此时S≈x*(y-1)。结合x∈[1000,10000],可得:
$$y-1 ≈ \frac{21000}{x}$$
因此y的范围被限制在[21000/10000 +1, 21000/1000 +1],即[3,22],无需枚举到10000。

3. 精确验证避免浮点数误差

若要判断是否存在精确解,可将方程转化为整数运算:
两边同乘y^7405得:
$$x \cdot (y-1) \cdot (y^{7405} - (y-1)^{7405}) = 21000 \cdot y^{7405}$$
对于每个候选y,检查右边是否能被左边的(y-1)*(y^{7405} - (y-1)^{7405})整除,若能则x为商,且需满足x∈[1000,10000]。

但实际计算可知,当y≥2时,(y-1)^7405>0,因此S=21000*(1-正数)<21000,不存在精确等于21000的整数解。你得到的20999.999999999996是浮点数无法表示极小差值导致的近似值,真实值无限接近21000。

优化后的代码示例

def find_closest_solutions():
    target = 21000
    min_diff = float('inf')
    best_x = best_y = best_s = 0
    # 根据范围筛选y的候选值
    for y in range(3, 23):
        # 计算近似x:x≈target/(y-1)
        approx_x = target / (y - 1)
        # 取近似x附近的整数,且在1000-10000范围内
        start_x = max(1000, int(approx_x) - 2)
        end_x = min(10000, int(approx_x) + 2)
        for x in range(start_x, end_x + 1):
            # 用简化公式计算结果
            r = (y - 1) / y
            s = x * (y - 1) * (1 - r**7405)
            diff = abs(s - target)
            if diff < min_diff:
                min_diff = diff
                best_x = x
                best_y = y
                best_s = s
                print(f"找到更优解:s={best_s}, x={best_x}, y={best_y}, 差值={min_diff}")

find_closest_solutions()

结论

不存在精确等于21000的整数x、y解,所有满足x*(y-1)≈21000的组合都会得到无限接近21000的结果,浮点数显示的末尾近似值是精度问题导致的。

内容的提问来源于stack exchange,提问作者chriscrutt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:57:06