is_n(0).
is_n(X):-X>0,Y is X-1,is_n(Y).

n(0).
n(X):-n(M),X is M+1.

prime(2).
prime(X):-n(Y),Y>1,Y<X,X is Z*Y,not(n(Z)).

between1(A,A,B):-A=<B.
between1(X,A,B):-A<B,A1 is A+1,between1(X,A1,B).

cucumber(X):-between1(X,0,1000),between1(Y,0,32),between1(Z,0,32),X is Y*Y+Z*Z.

%fib(0,0).
%fib(1,1).
%fib(X,N):-N1 is N-1,N2 is N-2,fib(Y,N1),fib(Z,N2), X is Y+Z.

fib(0,1).
fib(Y,Z):-fib(X,Y),Z is X+Y.

fib(X):-fib(X,_).