Jump to content

Perfect totient numbers: Difference between revisions

m
Added Delphi reference to Pascal code
(Added 11l)
m (Added Delphi reference to Pascal code)
Line 225:
3 9 15 27 39 81 111 183 243 255 327 363 471 729 2187 2199 3063 4359 4375 5571
</pre>
=={{header|Delphi}}==
{{libheader| System.SysUtils}}
{{Trans|Go}}
<lang Delphi>
program Perfect_totient_numbers;
 
{$APPTYPE CONSOLE}
 
uses
System.SysUtils;
 
function totient(n: Integer): Integer;
begin
var tot := n;
var i := 2;
while i * i <= n do
begin
if (n mod i) = 0 then
begin
while (n mod i) = 0 do
n := n div i;
dec(tot, tot div i);
end;
if i = 2 then
i := 1;
inc(i, 2);
end;
if n > 1 then
dec(tot, tot div n);
Result := tot;
end;
 
begin
var perfect: TArray<Integer>;
var n := 1;
while length(perfect) < 20 do
begin
var tot := n;
var sum := 0;
while tot <> 1 do
begin
tot := totient(tot);
inc(sum, tot);
end;
if sum = n then
begin
SetLength(perfect, Length(perfect) + 1);
perfect[High(perfect)] := n;
end;
inc(n, 2);
end;
writeln('The first 20 perfect totient numbers are:');
write('[');
for var e in perfect do
write(e, ' ');
writeln(']');
readln;
end.</lang>
 
=={{header|Factor}}==
478

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.