39 lines
1.5 KiB
QBasic
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
|