unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, math;
function isNarcissistic(num: integer): boolean;
function ProperDivisors(num: integer): integer;
function UglyNumber(num: integer): boolean;
implementation
function isNarcissistic(num: integer): boolean;
var
k, n, sum: integer;
begin
if num <= 0 then result:= false
else begin
k:= trunc(log10(num)) + 1;
n:= num;
sum:= 0;
while n > 0 do
begin
sum:= sum + trunc(intpower(n mod 10, k));
n:= n div 10;
end;
result:= sum = num;
end;
end;
function ProperDivisors(num: integer): integer;
var
i: integer;
begin
result:= 0;
if num <= 0 then result:= -1
else if num = 1 then result:= 0
else for i:= 1 to num div 2 do if num mod i = 0 then result:= result + i;
end;
function UglyNumber(num: integer): boolean;
begin
result:= true;
if num <= 0 then result:= false
else begin
while num <> 1 do
begin
if num mod 2 = 0 then num:= num div 2
else if num mod 3 = 0 then num:= num div 3
else if num mod 5 = 0 then num:= num div 5
else begin
result:= false;
break;
end;
end;
end;
end;
end.