28 lines
532 B
Text
28 lines
532 B
Text
local fn kaprekar( n as NSInteger ) as BOOL
|
|
NSInteger s = n^2
|
|
double t = 10^(int(log(s)) + 1)
|
|
BOOL result = NO
|
|
|
|
do
|
|
t = t / 10
|
|
if t <= n then break
|
|
if s - n == int(s/t)*(t-1) then result = YES : exit fn
|
|
until ( t <= n )
|
|
result = ( n = YES )
|
|
end fn = result
|
|
|
|
local fn DoIt
|
|
NSInteger i
|
|
float n = 0
|
|
for i = 1 to 1000000
|
|
if ( fn kaprekar(i) )
|
|
n++
|
|
if i < 1000000 then printf @"%2.f : %ld", n, i
|
|
end if
|
|
next
|
|
print "Kaprekar numbers under 1,000,000 = "; n
|
|
end fn
|
|
|
|
fn DoIt
|
|
|
|
HandleEvents
|