1 ! PROGRAM NAME --> G C F -- BY BOB HUNTSMAN 10 DIM B$(7%):B$(1%)="EASY":B$(2%)="MEDIUM":B$(3%)="HARD": B$(4%)="WRONG":B$(5%)="RIGHT":B$(6%)="LOW":B$(7%)="HIGH" 11 DIM B2$(3%),B2%(3%):B2$(1%)="LET'S START WITH":B2$(2%)= "NOW SOME":B2$(3%)="FINALLY, SOME":B2%(1%)=5%:B2%(2%)=3%: B2%(3%)=2%:B2%(0%)=5%:B%=0% 12 OPEN "KB:" AS FILE 1%:INPUT #1%, "NAME (CR)---> ";N$: V9$=SYS(CHR$(3%)): FIELD #1%,K% AS Q$,1% AS M3$(K%) FOR K%=0% TO 10%:RANDOM 15 RANDOM:DIM A%(30%) 17 DIM H%(15%):H%(1%)=1%:H%(K%)=2% FOR K%=2% TO 5% 18 H%(6%)=1%:H%(K%)=3% FOR K%=7% TO 10% 19 H%(11%)=1%:H%(K%)=5% FOR K%=12% TO 15% 30 PRINT "ENTER 'I' FOR INSTRUCTIONS:";:GOSUB 29000:PRINT M4$:GOTO 135 IF M4$<>"I" 40 PRINT:PRINT "THIS IS PROGRAM #2, NAME -GCF- . IT WILL DRILL YOU "; "ON YOUR" 50 PRINT "ABILITY TO CALCULATE GREATEST COMMON FACTORS. TO PASS"; " THIS PROGRAM," 55 PRINT "YOU MUST ANSWER 5 EASY PROBLEMS, 3 MEDIUM "; "PROBLEMS, AND 2 HARD" 60 PRINT "PROBLEMS. YOU'LL BE GIVEN THREE TRIES TO ANSWER EACH "; "PROBLEM; HOWEVER" 65 PRINT "ONLY PROBLEMS ANSWERED CORRECTLY THE FIRST TRY ARE "; "SCORED AS CORRECT" 70 PRINT "ANSWERS. YOU MUST GET 80% OF THE EASY ONES CORRECT, 70% "; "OF THE MEDIUM" 75 PRINT "ONES CORRECT AND 50% OF THE HARD ONES CORRECT (THEY ARE "; "R E A L L Y" 85 PRINT "HARD) IN ORDER TO PASS. IF YOU PASS, THE COMPUTER WILL TELL"; " YOU AND" 90 PRINT "ALLOW YOU TO GO ON TO PROGRAM #3! BY THE WAY, IF YOU WANT" ;" TO KNOW HOW" 95 PRINT "YOU'RE DOING ENTER '?' WHEN ASKED FOR YOUR ANSWER. IF YOU "; "GIVE UP," 100 PRINT "ENTER 'Q' FOR YOUR ANSWER AND THE PROGRAM WILL TERMINATE!!": PRINT:PRINT 110 GOTO 135 130 GOTO 1300 IF X%(B%+3%)=0%:GOTO 1300 IF B2%(B%)>X%(B%): GOTO 1300 IF 100%*X%(B%)/X%(B%+3%)<35%+15%*(4%-B%) 135 GOTO 1200 IF B%=3%:B%=B%+1%:PRINT:PRINT B2$(B%);" ";B$(B%);" ONES:": PRINT:GOTO 130 200 GOTO 130 IF F6%=0%:PRINT:F6%=0%:GOTO 230 IF B%:PRINT "GO BACK AND REDO PROGRAM #1, I N T R O !!!": GOTO 32000 230 PRINT "REDO THE ";B$(B%);" PROBLEMS!!": X%(B%),X%(B%+3%),X%(B%+1%),X%(B%+4%)=0%:GOTO 200 500 A1%=B3%:GOSUB 600:B%(K%)=A%(K%) FOR K%=0% TO A%(0%):B1$=A1$:A1%=A%:GOSUB 600 505 PRINT "THE PRIME FACTORS OF THE FIRST NUMBER ARE:":PRINT A1$ 510 PRINT:PRINT "THE PRIME FACTORS OF THE SECOND NUMBER ARE:":PRINT B1$: PRINT:RETURN 550 PRINT "THE GREATEST COMMON FACTOR OF THESE TWO NUMBERS EQUALS THE": PRINT "PRODUCT OF THE PRIME FACTORS THE TWO "; "NUMBERS HAVE IN COMMON. -- THAT" 555 PRINT "IS THE PRODUCT OF THE INTERSECTION OF THEIR PRIME NUMBERS.": PRINT:A1%=C%:GOSUB 600:GOTO 590 IF A%(0%)=1% 580 PRINT "THE FACTOR IN THE INTERSECTION ARE:":PRINT:PRINT A1$:PRINT: PRINT:RETURN 590 PRINT "THE TWO NUMBERS ARE RELATIVELY PRIME. THE GREATEST "; "COMMON FACTOR OF":PRINT "ANY TWO NUMBERS WHICH ARE "; "RELATIVELY PRIME IS ALWAYS THE SAME": PRINT "NUMBER.":PRINT:RETURN 600 D%=2%:A%(0%),A%(1%)=1% 610 IF A1%/D%*D%=A1% THEN A%(0%)=A%(0%)+1%:A%(A%(0%))=D%:A1%=A1%/D%: GOTO 610 620 D%=D%+2%:D%=3% IF D%=4%:GOTO 630 IF D%>A1%:GOTO 610 630 A1$=FNN$(1%):A1$=A1$+","+FNN$(A%(K%)) FOR K%=2% TO A%(0%):RETURN 640 DEF FNN$(V%)=MID(NUM$(V%),2%,LEN(NUM$(V%))-2%) 800 X3%=X3%+1%:H5%=H5%+1% IF B%=3%:X%=X%+1%: X%(B%+3%)=X%(B%+3%)+1%:X%(B%)=X%(B%)+1% IF E%=3% 810 RETURN IF E%=3% OR X%(B%+3%)<6%+B2%(B%):F6%=1%:PRINT :B%=B%-1%:PRINT N$;" -- YOU ARE NOT DOING VERY WELL ON "; "THESE PROBLEMS. YOU MUST":RETURN 900 D%=0%:D1%=INT(LOG10(C%))+1%:FOR K1%=1% TO D1% 910 GOSUB 29000:GOTO 920 IF M4$="?":GOTO 940 IF M4$="Q": M%=ASCII(M4$):GOTO 910 IF M%=32% AND D%=0%:RETURN IF M%=13% OR M%=32%:GOTO 910 IF M%<48% OR M%>57%: D%=D%*10%+M%-48%:PRINT M4$;:NEXT K1%:RETURN 920 F4%=0%:F4%=1% IF X%(K%) FOR K%=4% TO 6%:GOTO 910 IF F4%=0% 930 X%=POS(1%):PRINT M4$;:A1%=A%:B1%=B%:GOSUB 32005:A%=A1%:B%=B1%: PRINT TAB(X%-4%);"---> ";:GOTO 900 940 PRINT:PRINT:PRINT "SORRY, ";N$;" -- YOU DO NOT PASS. . .": GOTO 32000 1000 DEF FNR%(V%,V1%) 1010 V2%=V1%-V%+1%:V3%=INT(1000%*RND):V3%=V3%-V3%/V2%*V2%+V%:FNR%=V3% 1020 FNEND 1100 DEF FNX%=X%(1%)+X%(2%)+X%(3%) 1200 PRINT:PRINT "CONGRATULATIONS, ";N$;". YOU HAVE SUCCESSFULLY PASSED" 1210 PRINT "THE REQUIREMENTS OF PROGRAM #2!! YOU MAY NOW GO ON" 1220 PRINT "TO PROGRAM #3, NAMED -REDUCE-!!":PRINT:GOTO 32000 1300 H%=2%:I%=39%:IF B%=2% THEN H%=40%:I%=100% 1305 IF B%=3% THEN H%=80%:I%=364% 1310 R%=FNR%(1%,5%):IF B%=4% THEN I%=999% 1315 A%=FNR%(H%,I%):B3%=FNR%(H%,I%):GOTO 1315 IF FNC%(A%,B3%)5% AND A%=B3% 1317 PRINT "THE GCF OF";A%;"AND";B3%;"IS";TAB(25%);"--> "; 1320 C%=FNC%(A%,B3%):E%=3% 1325 PRINT "ANSWER:";:GOSUB 900:PRINT TAB(44%);:GOTO 1350 IF D%=C%: F%=6%:F%=7% IF D%>C%:PRINT "NO, ";N$;", YOU'RE TOO "; B$(F%);"." 1327 GOSUB 500 IF E%=3%:GOSUB 550 IF E%=2% 1330 IF E%>1% THEN PRINT "TRY AGAIN!! [";A%;"&";B3%;"]": E%=E%-1%:GOTO 1325 1335 E%=0%:PRINT "SORRY, ";N$;", THREE TRIES IS ALL YOU GET!!": PRINT "THE CORRECT ANSWER IS -->";C%:PRINT:GOSUB 800:GOTO 200 1350 PRINT "CORRECT!!":GOSUB 800:GOTO 200 1600 DEF FNC%(V%,V1%) 1610 E%=1%:D5%=0% 1625 D5%=D5%+2%:D5%=3% IF D5%=4%:IF D5%>V% OR D5%>V1% THEN FNC%=E%:GOTO 1640 1630 IF V%/D5%*D5%=V% AND V1%/D5%*D5%=V1% THEN E%=E%*D5%:V%=V%/D5%: V1%=V1%/D5%:GOTO 1630 1635 V%=FNQ%(V%,D5%):V1%=FNQ%(V1%,D5%):GOTO 1625 1640 FNEND 1660 DEF FNQ%(V2%,V3%) 1665 IF V2%/V3%=V3%=V2% THEN V2%=V2%/V3%:GOTO 1665 1670 FNQ%=V2% 1675 FNEND 29000 GOTO 29100 IF M3%=Z3%:M4$=M3$(M3%):M3%=M3%+1%:RETURN 29100 M3%=0%:V9$=SYS(CHR$(4%)):GET #1%:Z3%=RECOUNT:GOTO 29000 32000 PRINT:PRINT "GREATEST COMMON FACTOR":F3%=1% 32005 U$="\ \ - ## OUT OF ## ---> ###%":V9$=SYS(CHR$(2%)) UNLESS F3%=0% 32007 PRINT:PRINT N$;" -- HERE ARE YOUR SCORES:":PRINT 32010 FOR K%=1% TO 3%:GOTO 32100 IF X%(K%+3%)=0%:PRINTUSING U$, B$(K%),X%(K%),X%(K%+3%),100%*X%(K%)/X%(K%+3%) 32100 NEXT K% 32220 B%=0%:B%=B%+X%(K%) FOR K%=4% TO 6%:A%=0%:A%=A%+X%(K%) FOR K%=1% TO 3%:A%=100%*A%/B% 32225 IF F3%=0% THEN PRINT:PRINT "CUMULATIVE-->";A%:PRINT:RETURN 32230 B%=0%:B%=1% IF A%>60%:B%=2% IF A%>89%:DIM Z$(2%) 32240 Z$(0%)=", YOU DEFINITELY NEED MUCH MORE" + " PRACTICE!!":Z$(1%)=", YOU DID ABOUT AVERAGE" + " -- BUT YOU STILL NEED MORE PRACTICE!!" 32250 Z$(2%)=" -- GREAT -- YOU SEEM TO UNDERSTAND" + " THESE PROBLEMS VERY WELL!!" 32260 A$=NUM$(A%):PRINT:PRINT "YOUR CUMULATIVE SCORE IS"; LEFT(A$,LEN(A$)-1%);"%.":PRINT 32270 PRINT N$+Z$(B%):PRINT 32767 END