Arithmetic/Rational: Difference between revisions

Added Delphi example
(→‎{{header|Ruby}}: Speed up by using Integer.sqrt)
(Added Delphi example)
Line 570:
Sum of recipr. factors of 523776 = 2 exactly.</pre>
Currently RationalT!BigInt is not fast.
=={{header|Delphi}}==
{{libheader| System.SysUtils}}
{{libheader| Boost.Rational}}[[https://github.com/MaiconSoft/DelphiBoostLib]]
{{Trans|C#}}
<lang Delphi>
program Arithmetic_Rational;
 
{$APPTYPE CONSOLE}
 
uses
System.SysUtils,
Boost.Rational;
 
var
sum: TFraction;
max: Integer = 1 shl 19;
candidate, max2, factor: Integer;
 
begin
for candidate := 2 to max - 1 do
begin
sum := Fraction(1, candidate);
max2 := Trunc(Sqrt(candidate));
for factor := 2 to max2 do
begin
if (candidate mod factor) = 0 then
begin
sum := sum + Fraction(1, factor);
sum := sum + Fraction(1, candidate div factor);
end;
end;
if sum = Fraction(1) then
Writeln(candidate, ' is perfect');
end;
Readln;
end.</lang>
{{out}}
<pre>6 is perfect
28 is perfect
496 is perfect
8128 is perfect</pre>
=={{header|EchoLisp}}==
EchoLisp supports rational numbers as native type. "Big" rational i.e bigint/bigint are not supported.
478

edits