47 lines
882 B
Plaintext
47 lines
882 B
Plaintext
local fn Chowla( n as NSUInteger ) as NSUInteger
|
|
NSUInteger i, j, r = 0
|
|
|
|
i = 2
|
|
while ( i * i <= n )
|
|
j = n / i
|
|
if ( n mod i == 0 )
|
|
r += i
|
|
if ( i != j )
|
|
r += j
|
|
end if
|
|
end if
|
|
i++
|
|
wend
|
|
end fn = r
|
|
|
|
local fn DoIt
|
|
NSUInteger n, count = 0, power = 100, limit, k, kk, p = 0
|
|
|
|
for n = 1 to 37
|
|
printf @"chowla(%u) = %u", n, fn Chowla( n )
|
|
next
|
|
|
|
for n = 2 to 10000000
|
|
if ( fn Chowla(n) == 0 ) then count ++
|
|
if ( n mod power == 0 ) then printf @"There are %u primes < %-7u", count, power : power *= 10
|
|
next
|
|
|
|
count = 0
|
|
limit = 350000000
|
|
k = 2 : kk = 3
|
|
do
|
|
p = k * kk
|
|
if ( fn Chowla( p ) == p - 1 )
|
|
printf @"%9u is a perfect number", p
|
|
count++
|
|
end if
|
|
k = kk + 1
|
|
kk = kk + k
|
|
until ( p > limit )
|
|
printf @"There are %u perfect numbers < %u", count, limit
|
|
end fn
|
|
|
|
fn DoIt
|
|
|
|
HandleEvents
|