Pentru realizarea algoritmului am utilizat următoarele variabile:
- z3, un întreg, pe postul fiecărui z(n), pentru care am alocat 4 octeți;
- z2, un întreg, pe postul fiecărui z(n-1), pentru care am alocat 4 octeți;
- z1, un întreg pe postul fiecărui z(n-2), pentru care am alocat 4 octeți.
În concluzie, variabilele folosite utilizează o memorie de 3*4=12 octeți, de unde rezultă EFICIENȚA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

În prima parte a algoritmului, după declararea variabilelor, am citit din fișier z2 și z3, pe care le-am inversat - dacă a fost cazul - astfel încât ordinea descrescătoare să fie z3>z2. Imediat după calculul lor, le-am afișat, iar după fiecare număr un spațiu.
Am calculat z1 în funcție de formula generală.
Pașii:
a) afișează-l pe z1 cu spațiu după el;
b) noul z3 este vechiul z2;
c) noul z2 este z1 calculat;
d) noul z1 este (z3-2*z2)/3, conform formulei;
condiționat de z1>1 și z3==2*z2+3*z1 (formula dată), de faptul am luat invers numerele din aproape în aproape, calculându-l pe următorul din celelalte două de dinaintea lui (în ordine descrescătoare). De reținut că, în cazul în care, cele două valori inițiale nu fac parte din șir sau dacă la un moment dat, în urma calculelor numărul z1 rezultat nu poate fi calculat (a se vedea condiția din "while"), restul numerelor nu se mai afișează.
Complexitatea algoritmului este o constantă < z3 (cel mai mare din cele două numere citite) = O(z3) = C.
EFICIENTIZAREA TIMPULUI DE EXECUȚIE constă în liniaritatea algoritmului, complexitatea ajungând la o constantă C.