ある自然数 (1以上の整数,以下同じ) Nを,自然数xの3乗と,xより大きい自然数yの3乗の和で表す方法が2通り以下なのは自明または証明されているのでしょうか。
質問は,2通りぴったりであることを要求しているのに,質問者や回答者は3通り以上を気にせずにプログラムを組んでいます。
3通り以上に分解できる例は自然数Nに対して存在しないことの数学的な裏付けがあるのかどうか,疑問です。
なんとなく,証明があってもそうそう知られていない気がしますが……。
ちなみに,雑ながら
#include
int main(void)
{
int number;
for (number = 3; number <= 1000000; ++number)
{
int x, x1, y1, x2, y2;
int exists = 0;
for (x = 1; x * x * x < number; ++x)
{
int y;
for (y = x + 1; x * x * x + y * y * y < number; ++y)
;
if (x * x * x + y * y * y == number)
{
++exists;
if (exists == 1)
{
x1 = x;
y1 = y;
}
else if (exists == 2)
{
x2 = x;
y2 = y;
}
}
}
switch (exists)
{
case 0:
printf("%d : 分解不可\n", number);
break;
case 1:
printf("%d : %d ^ 3 + %d ^ 3 のみに分解可能\n", number, x1, y1);
break;
case 2:
printf("%d : %d ^ 3 + %d ^ 3 と %d ^ 3 + %d ^ 3 に分解可能\n", number, x1, y1, x2, y2);
break;
default:
printf("%d : %d 通りに分解可能\n", number, exists);
break;
}
}
return 0;
}
オフトピック
質問自体と直接関係しないので,こちらに書いています。10000以下であれば実際に存在しないので。