Asi seria el programa en VFP:
clear
i=2 && i=variable que ira desde 2 hasta mil
Do while i<=1000
x=1 && x iniciara desde 1 hasta i-1 para sumar los numeros divisores que estan entre 1 e "i"
s=0 && Suma es igual a cero
Do while x<i
if int(i/x)=(i/x) && Pregunto si el valor estero de la divicion es igual a la divisin natural
&& Esto es para saber si no hay residuos en la division
s=s+x && Si es divisor sumo "x" a la suma "s"
endif
x=x+1
Enddo
if s=i && Si la suma me da igual a "i", es perfecto
?i
wait
endif
i=i+1
Enddo
Saludos