The classical Möbius function: μ(n) is an important multiplicative function in number theory and combinatorics.

There are several ways to implement a Möbius function.

A fairly straightforward method is to find the prime factors of a positive integer n, then define μ(n) based on the sum of the primitive factors. It has the values {−1, 0, 1} depending on the factorization of n:

 μ(1) is defined to be 1.
 μ(n) = 1 if n is a square-free positive integer with an even number of prime factors.
 μ(n) = −1 if n is a square-free positive integer with an odd number of prime factors.
 μ(n) = 0 if n has a squared prime factor.


Task

 Write a routine (function, procedure, whatever) μ(n) to find the Möbius number for a positive integer n.
 Use that routine to find and display here, on this page, at least the first 99 terms in a grid layout. (Not just one long line or column of numbers.)


See also

 Wikipedia: Möbius function


Related Tasks

 Mertens function


 
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
 