Hi Rodrigo !
Your problem is not consistent for all kind of numbers, take for example the number 5 which is a number between $(0<n<1.0*10ˆ8)$, it can't unfortunately be written as sum of squared prime numbers.
But if your main objective is only doing for the cases that this actually work I would create a list of prime numbers with a function that I would call prime_generator() and square those numbers and then append those numbers into a list, until the square of the number that you are appending is larger than your input.
Then I would create a function that would iterate trough the list of prime squared numbers an try all the combinations of possible sums (this could be a really big problem in terms of optimisation) that would result on your input. When the sum was discovered the program would stop and would give you the actually prime squared numbers that you are looking for.
vetor = int(input())
primes = [x for x in range(2,5100) if not [t for t in range(2,x) if not x%t]] #prime_generator
square_primes = [i**2 for i in primes]
soma = []
for i in range(0,len(square_primes)):
try:
soma.append(square_primes[i]+square_primes[i+1]+square_primes[i+2]+square_primes[i+3])
except:
break
if vetor in soma:
print(vetor, '=' , primes[soma.index(vetor)],"ˆ2" ,'+', primes[soma.index(vetor)+1],"ˆ2" ,'+',primes[soma.index(vetor)+2],"ˆ2",'+',primes[soma.index(vetor)+3],"ˆ2")
else:
print("This number can't be expressed in these conditions")
I made this code in Python 3.7 to you !
Hope this helps.