Y >= 2, not(composite(Y)).
whole(1). whole(X) :- whole(X1), X is X1+1. composite(Y) :- whole(Z), whole(W), Z < Y, W < Y, Z > 1, Y is Z*W. prime(Y) :- whole(Y), Y >= 2, not(composite(Y)). prime100(N) :- prime(N), write(N), N>0, N<100, !.
isComposite(A) :- A1 is A-1, between(2,A1,N), 0 is mod(A,N). loop(X) :- X<0->false; isComposite(X) -> Y is X-1, continue(Y); write(X), nl, Z = X-1, continue(Z). continue(X):- loop(X).
Y >= 2, not(composite(Y)).