14 lines
341 B
Prolog
14 lines
341 B
Prolog
tt_divisors(X, N, TT) :-
|
|
Q is X / N,
|
|
( 0 is X mod N -> (Q = N -> TT1 is N + TT;
|
|
TT1 is N + Q + TT);
|
|
TT = TT1),
|
|
( sqrt(X) > N + 1 -> N1 is N+1, tt_divisors(X, N1, TT1);
|
|
TT1 = X).
|
|
|
|
perfect(X) :-
|
|
tt_divisors(X, 2, 1).
|
|
|
|
perfect_numbers(N, L) :-
|
|
numlist(2, N, LN),
|
|
include(perfect, LN, L).
|