Если бы я хотел генерировать уникальные (без учета негативов) пифагорейские четверки (в форме a ^ 2 + b ^ 2 + c ^ 2 = d ^ 2) с фиксированным d (в данном случае 2 ^ 15 - 1), есть ли лучший, чем O (n ^ 3) способ сделать это?
Прямо сейчас я довольно грубо заставляю это:
int r = (1 << 15) - 1;
for(int i = 0; i < r; i++)
for(int j = i; j < r; j++)
for(int k = j; k < r; k++)
if( i * i + j * j + k * k == r * r )
//add to list
Что такое O (n ^ 3), есть ли более быстрый способ? Я нашел несколько фрагментов, которые могли бы генерировать четверки, но все они сказали, что могут пропустить некоторые. Я видел уравнения для них, и я подумал, что может быть какая-то линейная система уравнений?