Значит не основная.
Код на всякий случай:
Код:
? for(z=400,500,z5=z^5;max_xy=sqrtnint(z5,4);t=0;for(x=1,max_xy,x4=x^4;for(y=x,max_xy,y4=y^4;if(x4+y4>=z5,break);if(ispower(z5-x4-y4,3,&t),printf("x=%d y=%d z=%d t=%d\n",x,y,z,t)))))
x=1360 y=1632 z=408 t=9248
x=1458 y=1458 z=486 t=26244
*** last result computed in 1min, 5,428 ms.
? for(z=400,500,z5=z^5;max_xy=sqrtnint(z5,4);t=0;for(x=1,max_xy,x4=x^4;for(y=x,max_xy,y4=y^4;if(x4+y4>=z5,break);if(ispower(z5-x4-y4,3),ispower(z5-x4-y4,3,&t);printf("x=%d y=%d z=%d t=%d\n",x,y,z,t)))))
*** last result computed in 52,229 ms.
? for(z=400,500,z5=z^5;max_xy=sqrtnint(z5,4);t=0;for(x=1,max_xy,x4=x^4;for(y=x,max_xy,t3=z5-x4-y^4;if(t3<=0,break);if(ispower(t3,3),ispower(t3,3,&t);printf("x=%d y=%d z=%d t=%d\n",x,y,z,t)))))
*** last result computed in 47,830 ms.
? for(z=400,500,z5=z^5;max_xy=sqrtnint(z5,4);t=0;for(x=1,max_xy,x4=x^4;z5x4=z5-x4;for(y=x,max_xy,t3=z5x4-y^4;if(t3<=0,break);if(ispower(t3,3),ispower(t3,3,&t);printf("x=%d y=%d z=%d t=%d\n",x,y,z,t)))))
*** last result computed in 41,591 ms.
Решения везде одинаковые, не показываю для экономии места.
Зацените разницу между первым и вторым, уже не 65с, а 52с, а ведь всего лишь убрал адрес
t в
ispower. А потом и ещё ускорилось, хотя казалось бы, лишь сложения/вычитания выносил за цикл ... Разница между третьим и четвёртым вариантами ровно в одной операции вычитания, повторяемой 203млн раз и занимающей 6с или 30нс/операцию (больше 100 тактов, мрак!).
И в итоге ускорилось в полтора раза! Интерпретаторы дело такое, от любого чиха колбасит скорость.