Na začetku definiramo funkcijo problem21 z enim parametrom n. Zamislimo si tudi dva seznama. V enem izmed teh dveh seznamov(sez) bo zaporedje vsot vseh pravih deljiteljev(vsi deljitelji števila n, ki niso n) do n. V drugem seznamu bo zaporedje prvih n števil. Seznam sez vnesemo že prve tri elemente, da bo lažje sestaviti kasnejši algoritem. Seznam sez1 definiramo kot prazen. Ta dva seznama bosta uporabna, ko bomo ustvarjali seznam parov naravnih števil do n in vsoto njihovih pravih deljiteljev.
Ustvarimo novo funkcijo, s katero si bomo pomagali izračunati vsoto vseh pravih deljiteljev števila a. Poimenujemo jo vsotaDelj(a), ima en parameter. Na začetku ustvarimo števec in ga nastavimo na 0. Z for zanko gremo čez vsa naravna števila do polovice a, saj nad polovico števila a ni pravih deljiteljev. Za vsako to naravno število z if stavkom preverimo, če je ostanek pri deljenju enak 0. Če je, vsoto povečamo za to število. V tem primeru j. Funkcija kot rezultat vrne vsoto.
Z zanko, ki teče od 4 do n+1, vsoto s pomočjo novoustvarjene funkcije nastavimo na vsoto pravih deljiteljev. Seznamu sez z ukazom sez.append dodamo vse vsote pravih deljiteljev do n+1 v zaporedju.
Z zanko for gremo od 1 do n+1 in dodamo vsa naravna števila v seznam sez1.
Tako smo zapolnili oba seznama.