32 lines
604 B
Plaintext
32 lines
604 B
Plaintext
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.
|