1) while b=0 do
Это условие ПРОДОЛЖЕНИЯ цикла. У вас получилось, что пока число равно 0, вы получаете у него последнюю цифру. Нелогично.
2) Удаление элементов лучше делать в самой программе, а не в процедуре.
3) Чтобы определить является ли число полным квадратом можно, например, определить множество полных квадратов и проверять элементы массива на вхождение в это множество.