Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Arithmetic-Rational/Prolog/arithmetic-rational.pro
Normal file
26
Task/Arithmetic-Rational/Prolog/arithmetic-rational.pro
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
divisor(N, Div) :-
|
||||
Max is floor(sqrt(N)),
|
||||
between(1, Max, D),
|
||||
divmod(N, D, _, 0),
|
||||
(Div = D; Div is N div D, Div =\= D).
|
||||
|
||||
divisors(N, Divs) :-
|
||||
setof(M, divisor(N, M), Divs).
|
||||
|
||||
recip(A, B) :- B is 1 rdiv A.
|
||||
|
||||
sumrecip(N, A) :-
|
||||
divisors(N, [1 | Ds]),
|
||||
maplist(recip, Ds, As),
|
||||
sum_list(As, A).
|
||||
|
||||
perfect(X) :- sumrecip(X, 1).
|
||||
|
||||
main :-
|
||||
Limit is 1 << 19,
|
||||
forall(
|
||||
(between(1, Limit, N), perfect(N)),
|
||||
(format("~w~n", [N]))),
|
||||
halt.
|
||||
|
||||
?- main.
|
||||
Loading…
Add table
Add a link
Reference in a new issue