c++ - 在 C++ 中找到与方程匹配的最小整数

标签 c++ algorithm math hardy-ramanujan

<分区>

Possible Duplicate:
Finding Hardy Ramanujan Numbers

我需要找到最小的自然数x,其中

x = k^3 + l^3 = i^3 + j^3 

(k, l, i, j) 必须全部不同。


我尝试了以下四个for循环,但由于变量无限增加,我无法得到正确的解决方案...

for (int i=0;;i++)
    for (int j=i+1;;j++)
        for (int k=j+1;;k++)
            for (int l=k+1;;i++)
                compare(i,j,k,l);

最佳答案

您需要重新构建您对问题的思考方式。

它实际上是在说:可以用两种不同方式表示为两个立方体之和的最小自然数是多少?

问题陈述称该数字为 x,立方体对为 (i, j) 和 (k, l)。

以这种方式重申,它并没有那么糟糕。这是伪代码中的提示:

function count_num_cubic_pairs(n):
    cubic_pairs = []
    for i..n:
        first_cube = i * i * i
        remainder = n - first_cube
        if remainder is a cube and (first_cube, remainder) not in cubic_pairs:
            cubic_pairs.add((first_cube, remainder))
    return length(cubic_pairs)

困难的部分是测试 remainder 是否是立方体 - 浮点错误会使事情复杂化很多。这是这个问题的真正核心 - 玩得开心。

关于c++ - 在 C++ 中找到与方程匹配的最小整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461312/

相关文章:

C++:Boost.Asio:在新线程中启动 SSL 服务器 session

c# - 如何从表中删除元素?

algorithm - 如何将闭合贝塞尔曲线转换为位图?

c++ - 为什么不初始化模板类的这个静态成员?

c++ - 侵入式_ptr : Why isn't a common base class provided?

c++ - 尝试根据 move 赋值编写 move 构造函数

algorithm - 有一些限制的最短路径算法

arrays - 合并排序数组,最佳时间复杂度是多少?

image - 从点获取畸变变换

python - 边界条件