Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
29
Task/Anti-primes/Prolog/anti-primes.pro
Normal file
29
Task/Anti-primes/Prolog/anti-primes.pro
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
divcount(N, Count) :- divcount(N, 1, 0, Count).
|
||||
|
||||
divcount(N, D, C, C) :- D*D > N, !.
|
||||
divcount(N, D, C, Count) :-
|
||||
succ(D, D2),
|
||||
divs(N, D, A), plus(A, C, C2),
|
||||
divcount(N, D2, C2, Count).
|
||||
|
||||
divs(N, D, 0) :- N mod D =\= 0, !.
|
||||
divs(N, D, 1) :- D*D =:= N, !.
|
||||
divs(_, _, 2).
|
||||
|
||||
|
||||
antiprimes(N, L) :- antiprimes(N, 1, 0, [], L).
|
||||
|
||||
antiprimes(0, _, _, L, R) :- reverse(L, R), !.
|
||||
antiprimes(N, M, Max, L, R) :-
|
||||
divcount(M, Count),
|
||||
succ(M, M2),
|
||||
(Count > Max
|
||||
-> succ(N0, N), antiprimes(N0, M2, Count, [M|L], R)
|
||||
; antiprimes(N, M2, Max, L, R)).
|
||||
|
||||
main :-
|
||||
antiprimes(20, X),
|
||||
write("The first twenty anti-primes are "), write(X), nl,
|
||||
halt.
|
||||
|
||||
?- main.
|
||||
Loading…
Add table
Add a link
Reference in a new issue