用算法检索一点东西,不限制算法

对于1到1000内的整数n,判断它是否可写成三个立方数之和(n=x^3+y^3+z^3),寻找尽可能多的n,不限算法,LLL算法或者暴力搜索都可以

那我不客气了直接上暴力

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    for (int a = 1; a <= n; a++)
    {
        for (int i = 1; i * i * i <= a; i++)
        {
            for (int j = i; j * j * j <= a; j++)
            {
                for (int k = j; k * k * k <= a; k++)
                {
                    if (i * i * i + j * j * j + k * k * k == a)
                    {
                        cout << a << ": " << i << " " << j << " " << k << endl;
                    }
                }
            }
        }
    }
    return 0;
}


哇哦, 如果x, y, z可以一样, 那就写好了, 如果不一样就需要改一下, 截个图看下, 速度还是挺快的:

img


  //统计1000以内的立方数
      std::vector<int> cubicNums;
    for (int i = 1; i*i*i < 1000; ++i){
        cubicNums.push_back(i * i * i);
    }
    //计算三个立方数和,并判断是否存在于1到1000以内
    int count = cubicNums.size();
    std::vector<int> result;
    for (int i=0; i<count; ++i)
    {
        for (int j=0; j<count; ++j)
        {
            for (int k = 0; k < count; k++)
            {
                int n = cubicNums[i] + cubicNums[j] + cubicNums[k];
                if (n < 1000)//如果要求三个不相同的数,在这里添加条件判断(i != j && j != k && j != k)
                {
                    result.push_back(n);
                }
                
            }
        }
    }