Arithmetic/Rational: Difference between revisions

Content added Content deleted
(Added Delphi example)
Line 3,673: Line 3,673:
-3/7=-3/7</pre>
-3/7=-3/7</pre>


=={{header|Prolog}}==
Prolog supports rational numbers, where P/Q is written as P rdiv Q.
<lang Prolog>
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.
</lang>
{{Out}}
<pre>
6
28
496
8128
</pre>
=={{header|Python}}==
=={{header|Python}}==
{{works with|Python|3.0}}
{{works with|Python|3.0}}