44 lines
826 B
Plaintext
44 lines
826 B
Plaintext
local fn IsPrime( n as long ) as BOOL
|
|
BOOL result = YES
|
|
long i
|
|
|
|
if ( n < 2 ) then result = NO : exit fn
|
|
for i = 2 to n + 1
|
|
if ( i * i <= n ) and ( n mod i == 0 )
|
|
result = NO : exit fn
|
|
end if
|
|
next
|
|
end fn = result
|
|
|
|
local fn Mobius( n as long ) as long
|
|
long i, p = 0, result = 0
|
|
|
|
if ( n == 1 ) then result = 1 : exit fn
|
|
for i = 1 to n + 1
|
|
if ( n mod i == 0 ) and ( fn IsPrime( i ) == YES )
|
|
if ( n mod ( i * i ) == 0 )
|
|
result = 0 : exit fn
|
|
else
|
|
p++
|
|
end if
|
|
end if
|
|
next
|
|
if( p mod 2 != 0 )
|
|
result = -1
|
|
else
|
|
result = 1
|
|
end if
|
|
end fn = result
|
|
|
|
window 1, @"Möbius function", (0,0,600,300)
|
|
|
|
printf @"First 100 terms of Mobius sequence:"
|
|
|
|
long i
|
|
for i = 1 to 100
|
|
printf @"%2ld\t", fn Mobius(i)
|
|
if ( i mod 20 == 0 ) then print
|
|
next
|
|
|
|
HandleEvents
|