Patrat

Problema se rezolva simplu daca construim vectorul ok, unde oki va fi true daca si numai daca i respecta proprietatile din enunt. Pentru a construi acest vector putem proceda astfel:

pentru i = 1, 20000
     ok[i] = false
pentru i = 1, [radical(20000)]
    pentru j = i+1, [radical(20000)]
        daca i * i + j * j <= 20000
            ok[i * i + j * j] = true

Pentru a afisa toate numerele intre x si y ce se pot scrie ca suma de patrate este suficient sa iteram un i intre cele doua margini si sa afisam acele valori care indeplinesc oki = true.