c64-basic/prime-workshop/prime-workshop.bas

39 lines
1.5 KiB
QBasic

10 GOSUB 9000
100 PRINT CHR$(147):PRINT " PRIME WORKSHOP":PRINT
110 INPUT "NUMBER 2-9999 (0 QUITS)";N
120 IF N=0 THEN 9900
130 IF N<2 OR N>9999 OR N<>INT(N) THEN PRINT "WHOLE NUMBERS ONLY.":GOTO 110
140 M=N:P=2:F$="":C=0:D=1:T=N
150 IF P*P>M THEN 230
160 E=0
170 IF M/P<>INT(M/P) THEN 200
180 M=M/P:E=E+1:C=C+1:GOTO 170
200 IF E=0 THEN 220
210 GOSUB 500:D=D*(E+1):T=T-T/P
220 P=P+1:GOTO 150
230 IF M>1 THEN P=M:E=1:C=C+1:GOSUB 500:D=D*2:T=T-T/P
240 PRINT:PRINT "FACTORIZATION:":PRINT F$:PRINT
250 IF C=1 THEN PRINT N;"IS PRIME.":GOTO 270
260 PRINT N;"IS COMPOSITE."
270 PRINT "DIVISORS:";D
280 PRINT "EULER TOTIENT:";T
290 PRINT:PRINT "SPACE=ANOTHER Q=QUIT"
300 GET A$:IF A$=" " THEN 100
310 IF A$<>"Q" THEN 300
320 GOTO 9900
500 IF F$<>"" THEN F$=F$+" X "
510 F$=F$+MID$(STR$(P),2)
520 IF E>1 THEN F$=F$+"^"+MID$(STR$(E),2)
530 RETURN
9000 POKE 53280,0:POKE 53281,0:PRINT CHR$(147);CHR$(154)
9010 PRINT:PRINT:PRINT " PRIME WORKSHOP":PRINT
9020 PRINT CHR$(5);" FACTOR NUMBERS AND EXPLORE TOTIENTS":PRINT:PRINT
9030 PRINT CHR$(153);" CONTROLS":PRINT
9040 PRINT CHR$(158);" 2-9999";CHR$(5);" NUMBER ";CHR$(158);"RETURN";CHR$(5);" SOLVE"
9050 PRINT " ";CHR$(158);"SPACE";CHR$(5);" AGAIN ";CHR$(158);"Q";CHR$(5);" QUIT":PRINT:PRINT
9060 PRINT " HTTPS://C64.P20.DEV":PRINT
9070 PRINT CHR$(152);" RELEASED 22 OCTOBER 2026":PRINT:PRINT
9080 PRINT CHR$(158);" PRESS SPACE TO START"
9090 GET A$:IF A$<>" " THEN 9090
9100 RETURN
9900 POKE 53280,14:POKE 53281,6:PRINT CHR$(147):END