RosettaCodeData/Task/Totient-function/Tiny-BASIC/totient-function.basic

40 lines
1.0 KiB
Plaintext

REM PRINT THE DATA FOR N=1 TO 25
LET N = 0
10 LET N = N + 1
IF N = 26 THEN GOTO 100
GOSUB 1000
IF T = N - 1 THEN LET P = 1
IF T <> N - 1 THEN LET P = 0
PRINT N," ", T," ",P
GOTO 10
100 REM COUNT PRIMES BELOW 10000
LET C = 0
LET N = 2
110 GOSUB 1000
IF T = N - 1 THEN LET C = C + 1
IF N = 100 THEN PRINT "There are ", C, " primes below 100."
IF N = 1000 THEN PRINT "There are ", C, " primes below 1000."
IF N = 10000 THEN PRINT "There are ", C, " primes below 10000."
LET N = N + 1
IF N < 10001 THEN GOTO 110
END
1000 REM TOTIENT FUNCTION OF INTEGER N
LET M = 1
LET T = 0
1010 IF M > N THEN RETURN
LET A = N
LET B = M REM NEED TO RENAME THESE SO THEY ARE PRESERVED
GOSUB 2000
IF G = 1 THEN LET T = T + 1
LET M = M + 1
GOTO 1010
2000 REM GCD OF INTEGERS A, B
2010 IF A>B THEN GOTO 2020
LET B = B - A
IF A=0 THEN LET G = B
IF A=0 THEN RETURN
2020 LET S = A
LET A = B
LET B = S
GOTO 2010