37 lines
758 B
ObjectPascal
37 lines
758 B
ObjectPascal
function digitsSum(n, sum: int64): int64;
|
|
begin
|
|
result := sum + 1;
|
|
while (n > 0) and (n mod 10 = 0) do
|
|
begin
|
|
result -= 9;
|
|
n := n div 10;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
var niven: int64 := 0;
|
|
var gap: int64 := 0;
|
|
var sum: int64 := 0;
|
|
var nivenIndex: int64 := 0;
|
|
var previous: int64 := 1;
|
|
var gapIndex: int64 := 1;
|
|
|
|
println('Gap index Gap Niven index Niven number');
|
|
|
|
while gapIndex <= 32 do
|
|
begin
|
|
niven += 1;
|
|
sum := digitsSum(niven, sum);
|
|
if niven mod sum = 0 then
|
|
begin
|
|
if niven > previous + gap then
|
|
begin
|
|
gap := niven - previous;
|
|
writeln(gapIndex:9, gap:5, nivenIndex:13, previous:14);
|
|
gapIndex += 1;
|
|
end;
|
|
previous := niven;
|
|
nivenIndex += 1;
|
|
end;
|
|
end;
|
|
end.
|