Professional Documents
Culture Documents
isFactorOf(Factor,Factor).
isFactorOf(Factor,Bignumber) :-
\+Factor=0,
Bignumber mod Factor =:= 0.
:- op(900,xfy,isFactorOf).
%Part B.
isFactorCascade(Factor, Bignumber) :- %Case where Factor is a factor.
isFactorOf(Factor,Bignumber). %Simple call to check if factor. Returns true
if so.
isFactorCascade(Factor, Bignumber) :- %Case where Factor is not a factor.
Factor>2, %Stop if Factor approaches 'useless' numbers.
isFactorCascade(Factor-1, Bignumber). %Recursion.
isPrime(X) :- X=2.
isPrime(X) :- \+ isFactorCascade(X-1,X). %Needs a separate function to allow for
having only one variable input.
%Part D.
%First, make an insertion predicate.
insert(X,[],[X]).
insert(X,[H|T],[X,H|T]) :- X<H.
insert(X,[H|T1],[H|T2]) :- insert(X,T1,T2).