Möbius function: Difference between revisions

m (small tweak to avoid overflows)
Line 904:
0 1 0 -1 0 -1 1 -1 0 0 -1 0 0 -1 -1 0 0 1 1 -1
0 -1 -1 1 0 1 -1 1 0 0 -1 -1 0 -1 1 -1 0 -1 0 -1
</pre>
 
=={{header|Ring}}==
Translation of: FreeBASIC
<lang ring>
mobStr = " . "
 
for i = 1 to 200
if mobius(i) >= 0
mobStr + = " "
ok
temp = string(mobius(i))
if left(temp,2) = "-0"
temp = right(temp,len(temp)-1)
ok
mobStr += temp + " "
if i % 10 = 9
see mobStr + nl
mobStr = " "
ok
next
 
func mobius(n)
if n = 1
return 1
ok
for d = 2 to ceil(sqrt(n))
if n % d = 0
if n % (d*d) = 0
return 0
ok
return -mobius(n/d)
ok
next
return -1
</lang>
Output:
<pre>
. 1 -1 -1 0 -1 1 -1 0 0
1 -1 0 -1 1 1 0 -1 0 -1
0 1 1 -1 0 0 1 0 0 -1
-1 -1 0 1 1 1 0 -1 1 1
0 -1 -1 -1 0 0 1 -1 0 0
0 1 0 -1 0 1 0 1 1 -1
0 -1 1 0 0 1 -1 -1 0 1
-1 -1 0 -1 1 0 0 1 -1 -1
0 0 1 -1 0 1 1 1 0 -1
0 1 0 1 1 1 0 -1 0 0
0 -1 -1 -1 0 -1 1 -1 0 -1
-1 1 0 -1 -1 1 0 0 1 1
0 0 1 1 0 0 0 -1 0 1
-1 -1 0 1 1 0 0 -1 -1 -1
0 1 1 1 0 1 1 0 0 -1
0 -1 0 0 -1 1 0 -1 1 1
0 1 0 -1 0 -1 1 -1 0 0
-1 0 0 -1 -1 0 0 1 1 -1
0 -1 -1 1 0 1 -1 1 0 0
-1 -1 0 -1 1 -1 0 -1 0 -1
</pre>
 
2,468

edits