Skip to content

Instantly share code, notes, and snippets.

@Anniepoo
Created March 30, 2014 19:24
Show Gist options
  • Save Anniepoo/9878230 to your computer and use it in GitHub Desktop.
Save Anniepoo/9878230 to your computer and use it in GitHub Desktop.
% computes the prime factorization of N
primeFactorization(N, P) :-
primeFactorization_prime(N, [N], [], Q),
P = Q.
primeFactorization_prime(_N, [], P, Q) :-
Q = P.
primeFactorization_prime(N, [FH |FT], P, Q) :-
factorization(FH, F_factors),
pfp_helper([FH|FT], F_factors, N, P, P_prime, F_prime),
primeFactorization_prime(N, F_prime, P_prime, Q).
% prime factor case
pfp_helper([F_head | F_tail], [], N, P, P_prime, _) :-
F_head \= N, % or else we end up putting N in P if N is prime
append([F_head], P, P_prime),
F_prime = F_tail.
pfp_helper([_ | F_tail], F_factors, _N, P, P_prime, F_prime) :-
F_factors = [_ | _],
append(F_factors, F_tail, F_prime),
P_prime = P.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment