RosettaCodeData/Task/M-bius-function/XBasic/m-bius-function.basic

32 lines
601 B
Plaintext

PROGRAM "Möbius function"
VERSION "0.0000"
IMPORT "xma"
DECLARE FUNCTION Entry ()
DECLARE FUNCTION mobius (n)
FUNCTION Entry ()
outstr$ = " . "
FOR i = 1 TO 200
IF mobius(i) >= 0 THEN outstr$ = outstr$
outstr$ = outstr$ + STR$(mobius(i)) + " "
IF i MOD 10 = 9 THEN
PRINT outstr$
outstr$ = ""
END IF
NEXT i
END FUNCTION
FUNCTION mobius (n)
IF n = 1 THEN RETURN 1
FOR d = 2 TO INT(SQRT(n))
IF n MOD d = 0 THEN
IF n MOD (d*d) = 0 THEN RETURN 0
RETURN -mobius(n/d)
END IF
NEXT d
RETURN -1
END FUNCTION
END PROGRAM