RosettaCodeData/Task/M-bius-function/ASIC/m-bius-function.asic

38 lines
581 B
Plaintext

REM Moebius function
FOR T = 0 TO 9
FOR U = 1 TO 10
N = 10 * T
N = N + U
GOSUB CalcMoebius:
PRINT M;
NEXT U
PRINT
NEXT T
END
CalcMoebius:
REM Calculate Moebius(N). Result in M.
REM NOTE. N changes its value.
M = 1
IF N <> 1 THEN
F = 2
StartLoop:
FTo2 = F * F
NModFTo2 = N MOD FTo2
IF NModFTo2 = 0 THEN
M = 0
ELSE
NModF = N MOD F
IF NModF = 0 THEN
M = -M
N = N / F
ENDIF
F = F + 1
ENDIF
IF M = 0 THEN AfterLoop:
IF F > N THEN AfterLoop:
GOTO StartLoop:
AfterLoop:
ENDIF
RETURN