PRINT "PROG FACTORS, open with qbasic 18.11.89,"
PRINT "TOSHIBA 486 LAPTOP 8.9.99"
PRINT "CALCULATE ALL PRIME FACTORS OF A (SEQUENCE OF) POSITIVE INTEGERS,"
PRINT "BY DS MCDONALD, WGTN. 04-389 6820, EXAMPLE 085-88580"
REM @%=10:X$="0"
NOW = TIME
PRINT "suppress beep, remove (keep PRINT) .. CHR$(7)"
PRINT ' "RESIDUAL FACTOR="; X%; ". START NO. ="; X$; " NO. PRIMES="; N%'"TIME = ";.01*(TIME-NOW)" SECS"
REM ON ERROR REPORT:PRINT" AT LINE ";ERL:GOTO 50
INPUT "ENTER NO./EXPRESSION TO FACTORISE, 2161 +30n, max 2^14.99, 0=END", X%: REM $: X% = EVAL(X$): PRINT " = "; X%: IF X% = 0 THEN 240
PRINT "CALCULATES NUMBERS OF ODD PARITY, OR EVEN PARITY."
INPUT "ENTER STEP BETWEEN NUMBERS, 1= EVERY NUMBER, 2=ODDS OR EVENS ONLY, ETC."; S%
NOW = TIME
N% = 0
FOR Y% = X% TO 2 ^ 14.99 STEP S%: X% = Y%: PRINT ; X%; " = ";
IF X% < 1 THEN STOP
WHILE (X% MOD 2 = 0) AND X% > 1
 PRINT ; 2; "  "; : X% = X% / 2:
WEND: REM GOTO 130
IF ABS(X%) < 9 THEN 190

Z% = 3
FOR Z% = Z% TO SQR(X%) STEP 2
WHILE X% MOD Z% = 0
REM THEN
PRINT ; Z%; "  "; :  X% = INT(X% / Z%):
WEND: REM GOTO 160
NEXT Z%
190 : IF X% > 1 THEN PRINT ; X%:  ELSE PRINT
IF X% = Y% THEN
N% = N% + 1:
PRINT TAB(30); "prime.."; N%, "PAUSE/ SPC/ CTRL BREAK /F5/ FN F4"; CHR$(7)
END IF
NEXT Y%
PRINT "REACHED HIGHEST INTEGER IN BASIC."
PRINT "new mod.***  not fixed for descending prime nos. "
PRINT "REM BASIC ERROR, NEVER ARRIVES, BECOMES EQUAL TO -(2^31)."
REM GOTO 50
PRINT "PROGRAM  FACTORS  E N D.": END
:

