对于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可以一样, 那就写好了, 如果不一样就需要改一下, 截个图看下, 速度还是挺快的:
//统计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);
}
}
}
}