flag = 0;
for(x=1; x*x < n; x++) {
if (flag) break;
for(y=x; y*y < n; y++) {
for(z=y; z*z<n; z++) {
if (x*x+y*y+z*z == n) {
printf("x=%d y=%d z=%d\n", x, y, z);
flag = 1;
}
if (flag==0) printf("No\n");
Объяснение:
Без потери общности можно считать, что x <= y <= z
flag = 0;
for(x=1; x*x < n; x++) {
if (flag) break;
for(y=x; y*y < n; y++) {
if (flag) break;
for(z=y; z*z<n; z++) {
if (flag) break;
if (x*x+y*y+z*z == n) {
printf("x=%d y=%d z=%d\n", x, y, z);
flag = 1;
}
}
}
}
if (flag==0) printf("No\n");
Объяснение:
Без потери общности можно считать, что x <= y <= z