osztok(X,Oszt):- osztok(X,X,Oszt).
osztok(X,Y,[Y|Oszt]):- Y>1, (X mod Y) =:= 0, Y1 is Y-1,
osztok(X,Y1,Oszt).
osztok(X,Y,Oszt):- Y>1, (X mod Y) =\= 0, Y1 is Y-1,
osztok(X,Y1,Oszt).
osztok(_,1,[1]).
osszeg([],0).
osszeg([X|L],Ossz):- osszeg(L,OsszR), Ossz is OsszR + X.
tokeletes(X):- osztok(X,Oszt), osszeg(Oszt,Ossz), Ossz =:= 2*X.