## Introduction

About three days ago, I had a talk with a student about Math and Pierre de Fermat. It was an interesting discussion. His problem was how to solve the problem named **Perfect Cube**. So I had to take a small break with him and we resolved this simple-medium problem. I also found it interesting to write my conclusions.

For many years, *Fermat Theorem*, said that it was not possible for three integers number a,b,c > 1 and one natural number n > 2 to exist, in this way to have a^{n} + b^{n }= c^{n}, it has not been demonstrated. Many attempts have been made to demonstrate this thing and none of them worked. But it is possible to find integers greater then 1 that satisfy the *perfect cube equation*: a^{3} = b^{3} + c^{3} + d^{3} (for example 12^{3} = 6^{3} + 8^{3} + 10^{3} is true).

## Background

This problem aims to write a small program that will display in file "*cubes.out*" all multitudes of numbers {a,b,c,d} from multitude {1,2,...,100} that satisfy this equation like:

Cube = 6, Triple = (3,4,5)
Cube = 12, Triple = (6,8,10)
Cube = 18, Triple = (2,12,16)
........
Cube = 99, Triple = (11,66,88)
Cube = 100, Triple = (16,68,88)
Cube = 100, Triple = (35,70,85)

## Using the Code

For all pairs of natural numbers a and b, with properties: a > b and a, b being between 2 and 100, we are looking for c and d numbers with the property:

a3 - b3 = c3 + d3

We will use an array named *cube *to keep all cubes of natural numbers from [0,100]. For a and b fixed we note with *rest* the difference a^{3} - b^{3}. Later, for c fixed we look for d. In this way the `cube[d] = rest - rest[c]`

.

#include <stdio.h>
long cube[101];
FILE* fout;
void main()
{
int i,a,b,c,d, rest, rest2;
fout = fopen("cubes.out", "w");
for(i=0; i<=100;i++)
cube[i] = i*i*i;
for(a=6; a<100; a++)
for(b=2; b<a; b++)
{
rest = cube[a] - cube[b];
for(d=c; cube[d]<=rest2; d++)
if(cube[d]==rest2)
fprintf(fout, "Cube=%d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
fclose(fout);
}

Happy coding!

## History

- 20
^{th} April, 2009: Initial post