Pentru realizarea algoritmului am utilizat următoarele variabile:
- n, valoarea maximă până unde trebuie parcurse numerele pentru a fi afișate pe ecran, pentru care am alocat 4 octeți;
- x, o valoare din șirul de valori pe care am citit-o din fișier, pentru care am alocat 4 octeți;
- i, o variabilă prin care parcurg numerele de la vechiul x până la noul x citit din fișier, pentru care am alocat 4 octeți;
- ok, o variabilă booleană care va înregistra dacă am afișat sau nu vreo valoare dintre două vecine din sir, în caz contrar, la final mă va ajuta să afișez textul "Nu exista", pentru care am alocat 1 octet.
În concluzie, variabilele folosite utilizează o memorie de 4*3+1=13 octeți, de unde rezultă EFICIENȚA UTILIZĂRII MEMORIEI (pe lângă variabila utilizată pentru fișier).

Algoritmul începe prin citirea valorilor n și a valorilor x din fișier; după asta afișez pe ecran toate numerele de la 1 la x-1 prin intermediul lui i; la fiecare pas actualizez valoarea lui i cu x+1.
Cât timp mai există valori în fișier, citesc o nouă valoare x și afișez valorile din intervalul [i,x-1]; după afișare, reiau citirea în x, după care reiau pașii menționați mai sus.
În cazul în care nu afișez nimic, ok rămâne neschimbat, astfel că la final voi putea afișa mesajul "Nu exista", dacă nu am afișat nimic pe ecran. Am presupus la început că nu afișez nimic (ok=0); în cazul în care afișez ceva, ok va deveni 1, astfel că la final, e ușor de verificat dacă am afișat ceva sau nu.
În acest fel am EFICIENTIZAT TIMPUL DE EXECUȚIE, algoritmul fiind unul liniar, complexitatea algoritmului fiind maxim N (unde N este numărul de valori din fișier) = O(N), de unde rezultă liniaritatea algoritmului.