not_prime(N):-N<2. not_prime(N):- between(2,N,D), (D^2>N->!,fail;true), N mod D=:=0, !. is_prime(N):-not(not_prime(N)). calc(Size,P,Count):- P>0, P*10<Count,!, Ans is Size-2, write(Ans). calc(Size,P,Count):- A1 is Size*Size, A2 is A1-Size+1, A3 is A2-Size+1, A4 is A3-Size+1, findall(E,(member(E,[A1,A2,A3,A4]),is_prime(E)),Es), length(Es,Add), Count1 is Count+4, P1 is P+Add, Size1 is Size+2, calc(Size1,P1,Count1). main:- calc(3,0,1).