39 lines
934 B
Text
39 lines
934 B
Text
local fn DigitSum( n as UInt64, sum as UInt64 ) as UInt64
|
|
sum++
|
|
while ( n > 0 and n mod 10 == 0 )
|
|
sum -= 9
|
|
n = n / 10
|
|
wend
|
|
end fn = sum
|
|
|
|
|
|
local fn IsDivisible( n as UInt64, d as UInt64 ) as BOOL
|
|
BOOL result
|
|
|
|
if ( ( d and 1 ) == 0 and ( n and 1 ) == 1 ) then result = NO : exit fn
|
|
result = n mod d == 0
|
|
end fn = result
|
|
|
|
local fn DoIt
|
|
UInt64 niven, previous = 1, gap = 0, sum = 0
|
|
long niven_index = 0, gap_index = 1
|
|
|
|
printf( @"Index Gap Niven index Niven number" )
|
|
printf( @"----- --- ----------- ------------" )
|
|
for niven = 1 to gap_index <= 24
|
|
sum = fn DigitSum( niven, sum )
|
|
if ( fn IsDivisible( niven, sum ) )
|
|
if ( niven > previous + gap )
|
|
gap = niven - previous
|
|
printf @"%3d %6llu %13d %15llu", gap_index, gap, niven_index, previous
|
|
gap_index++
|
|
end if
|
|
previous = niven
|
|
niven_index++
|
|
end if
|
|
next
|
|
end fn
|
|
|
|
fn DoIt
|
|
|
|
HandleEvents
|