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

如何修改圆周率生成代码使其在第300位处停止输出?

解决Gibbons抽离算法生成π时精准截断到第300位的问题

你的核心问题在于main函数中的循环没有设置终止条件,导致程序无限运行。要精准输出到第300位小数,只需要将循环改为固定执行300次即可——初始化后已经输出了π的整数部分(3)和小数点,后续每一次++g都会生成一位小数,循环300次就能得到300位小数。

修改后的main函数代码

int main()
{
    Gospers g;

    std::cout << *g << ".";  // 输出整数部分和小数点

    // 循环300次,生成并输出300位小数
    for(int count = 0; count < 300; ++count)
    {
        std::cout << *++g;  // 生成下一位并输出
    }
    std::cout << std::endl;
    return 0;
}

关键说明

  • 原代码中的for(300;)是无效写法,会被编译器识别为无限循环。替换为带计数器的循环,明确控制执行次数,就能精准截断到第300位。
  • Gibbons抽离算法本身是逐位确定性生成π的小数位,只要循环次数准确,就能保证输出的是前300位有效小数,完全不需要依赖时间截断这类不可靠的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:01:20