Hola RGT.
En realidad no es tán complejo, para evitar la repetición de ternas basta con que la segunda variable de control se inicie con el último valor alcanzado por la primera. Y para el número de ternas se puede usar un contador.
A modo de ejemplo, aunque el número de ternas resulta inconexo con el máximo numero (seguramente una invalidará la otra), sería algo como:
Código C++:
Ver original#include <stdio.h>
int main() {
// nro de ternas, máximo nro, contador de ternas
int ternas = 5, num = 1000, cont = 1;
int i, j, k;
for(i = 1; i <= num && cont <= ternas; i++)
for(j = i; j <= num && cont <= ternas; j++)
for(k = 1; k <= num && cont <= ternas; k++)
if (i*i + j*j == k*k) {
printf("%4d: (%3d, %3d, %3d) : %4d + %4d = %4d\n", cont, i, j, k, i*i, j*j, k*k);
cont++;
}
return 0;
}
Saludos.