Home » Archimedes archive » Acorn User » AU 1997-11 B.adf » Regulars » StarInfo/vanMourik/FACTORISE

StarInfo/vanMourik/FACTORISE

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-11 B.adf » Regulars
Filename: StarInfo/vanMourik/FACTORISE
Read OK:
File size: 0B74 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >FACTORISE
   20REM JEAN VAN MOURIK MILLCOTTAGE DERWYDD AMMANFORD DYFED SA183LQ  UK.
   30 
   40MODE12:PRINT"PRIMES SIEVE, FAST VERSION.":PRINT:ON ERROR GOTO 790
   50PRINT"BY JEAN VAN MOURIK."
   60PRINT"EACH MULTIPLE OF A PRIME IS ERASED FROM THE ARRAY."
   70PRINT"THEN HARVESTS THE PRIMES FROM THAT ARRAY.":PRINT"THEN ALLOWS TO FIND FACTORS OF ANY NUMBER.":PRINT"METHOD USED; SIEVE OF ERATOSTHENES."
   80PRINT"WITH PRIMES UP TO N, FACTORS OF NUMBERS UP TO N*N CAN BE FOUND."
   90C%=46333:PRINT"N = ";C%:REM 46327^2 IS THE MAXIMUM INTEGER VALUE.
  100REM SIEVE ARRAY A%() PRIME (1) OR COMPOSITE (0) FOR ALL NUMBERS, P%() WILL CONTAIN PRIMES AFTER THE ROUTINE IS FINISHED.
  110DIMA%(C%),P%(C%/7),D%(7),E%(7),F%(7)
  120E%()=7,11,13,17,19,23,29,31:F%()=4,2,4,2,4,6,2,6
  130 
  140PRINT:PRINT"CALCULATING......"
  150TIME=0:PROCSIEVE(C%):PRINT"TIME SIEVEING ";TIME;
  160PROCROUNDUP(C%):PRINT;"  +  TIME HARVESTING PRIMES = ";TIME
  170PRINT:PRINT"TOTAL NUMBER OF PRIMES FOUND; ";N%:N%-=1
  180PRINT:PRINT"NOW TO FIND FACTORS. INPUT NUMBER MAX.";:IF C%>46326 PRINT" 2147483647 (2^31-1)":ELSEPRINTC%*C%
  190PRINT"INPUT NUMBER TO FACTORIZE;":@%=8
  200REPEAT:PRINT:INPUT"NUMBER";D%:IFD%<4 UNTIL0
  210PROCFACTOR(D%,C%,N%):UNTIL0
  220 
  230REM SIEVE OF ERASTOSTHENES. MULTIPLES OF 3 AND 5 ARE NOT ERASED AND NOT COUNTED EITHER.
  240DEFPROCSIEVE(C%):LOCAL P%,Q%,S%,D%,Y%,Z%
  250A%()=1:P%=1:Q%=6:S%=SQRC%
  260REPEAT
  270REPEAT:Q%+=1:P%+=F%(Q%MOD8):UNTILA%(P%):IFP%>S% THEN ENDPROC
  280D%()=E%()*P%:D%=30*P%:D%()+=((P%-5)DIV30*D%)
  290IFD%(7)<=C% FORY%=0TO7:FORZ%=D%(Y%)TOC%STEPD%:A%(Z%)=0:NEXT:NEXT:UNTIL0
  300FORY%=0TO6:IFD%(Y%)<=C% FORZ%=D%(Y%)TOC%STEPD%:A%(Z%)=0:NEXT:NEXT
  310UNTIL0
  320ENDPROC
  330
  340REM HARVESTS ALL PRIMES
  350DEFPROCROUNDUP(C%):LOCAL Q%
  360P%()=2,3,5:N%=3
  370FOR Q%=7TOC%-30STEP30:IFA%(Q%) P%(N%)=Q%:N%+=1
  380IFA%(Q%+4)P%(N%)=Q%+4:N%+=1
  390IFA%(Q%+6)P%(N%)=Q%+6:N%+=1
  400IFA%(Q%+10)P%(N%)=Q%+10:N%+=1
  410IFA%(Q%+12)P%(N%)=Q%+12:N%+=1
  420IFA%(Q%+16)P%(N%)=Q%+16:N%+=1
  430IFA%(Q%+22)P%(N%)=Q%+22:N%+=1
  440IFA%(Q%+24)P%(N%)=Q%+24:N%+=1
  450NEXT
  460IFQ%<C% IFA%(Q%) P%(N%)=Q%:N%+=1
  470IFQ%+4<C% IFA%(Q%+4) P%(N%)=Q%+4:N%+=1
  480IFQ%+6<C% IFA%(Q%+6) P%(N%)=Q%+6:N%+=1
  490IFQ%+10<C% IFA%(Q%+10) P%(N%)=Q%+10:N%+=1
  500IFQ%+12<C% IFA%(Q%+12) P%(N%)=Q%+12:N%+=1
  510IFQ%+16<C% IFA%(Q%+16) P%(N%)=Q%+16:N%+=1
  520IFQ%+22<C% IFA%(Q%+22) P%(N%)=Q%+22:N%+=1
  530IFQ%+24<C% IFA%(Q%+24) P%(N%)=Q%+24:N%+=1
  540ENDPROC
  550
  560REM ROUTINE TO FIND FACTORS OF INPUT NUMBER.  USES PRIMES IN ARRAY P%().
  570DEFPROCFACTOR(D%,C%,N%):LOCAL A%,B%,Y
  580B%=0:PRINT"= ";
  590REPEAT:Y%=SQRD%:A%=Y%/LNY%+Y%/99+52:IF A%>N% A%=N%
  600FORB%=B%TOA%:IFD%MODP%(B%)NEXT:PRINT;D%:UNTIL1:ENDPROC
  610PRINT;P%(B%);"*";:IF A%>B% D%=D%/P%(B%):IFD%>3 UNTIL0
  620PRINT;D%:UNTIL1
  630ENDPROC
  640 
  650REM TEST TO SET THE VALUES OF CONSTANTS USED IN PROCFACTOR. (INACTTIVE)
  660MODE0:Z%=0:V%=0:FORY%=44TO46300STEP11:A%=Y%/LNY%+Y%/99
  670FORB%=A%TOC%:IFY%>N%(B%) NEXT
  680IFB%-A%<V% V%=B%-A%:U%=Y%
  690PLOT69,Y%/40,2*(B%-A%):PLOT69,Y%/40,111:IFB%-A%>Z% Z%=B%-A%:W%=Y%
  700NEXTY%:PRINT"LARGEST B%-A%=";Z%;" AT Y%=";W%
  710END
  720 
  730REM PRIME TEST FOR ALL ENTRIES IN ARRAY P%(). (INACTTIVE)
  740FOR X%=2 TO N%-1:M%=0:REPEAT:IF P%(M%)*P%(M%)>P%(X%) NEXT:END
  750IF P%(X%)MODP%(M%)=0 PRINTP%(X%);"NOT PRIME !  ";P%(M%):NEXT:END
  760M%+=1:UNTIL0
  770 
  780REM ERROR HANDLING WHEN INPUT NUMBER TOO BIG.
  790IF ERR=20:REPORT:PRINT:GOTO200
  800REPORT:PRINT" AT LINE ";ERL:END

� >FACTORISE
F� JEAN VAN MOURIK MILLCOTTAGE DERWYDD AMMANFORD DYFED SA183LQ  UK.
 
(3�12:�"PRIMES SIEVE, FAST VERSION.":�:� � � �TVC
2�"BY JEAN VAN MOURIK."
<9�"EACH MULTIPLE OF A PRIME IS ERASED FROM THE ARRAY."
F��"THEN HARVESTS THE PRIMES FROM THAT ARRAY.":�"THEN ALLOWS TO FIND FACTORS OF ANY NUMBER.":�"METHOD USED; SIEVE OF ERATOSTHENES."
PF�"WITH PRIMES UP TO N, FACTORS OF NUMBERS UP TO N*N CAN BE FOUND."
Z?C%=46333:�"N = ";C%:� 46327^2 IS THE MAXIMUM INTEGER VALUE.
dz� SIEVE ARRAY A%() PRIME (1) OR COMPOSITE (0) FOR ALL NUMBERS, P%() WILL CONTAIN PRIMES AFTER THE ROUTINE IS FINISHED.
n&�A%(C%),P%(C%/7),D%(7),E%(7),F%(7)
x4E%()=7,11,13,17,19,23,29,31:F%()=4,2,4,2,4,6,2,6
� 
��:�"CALCULATING......"
�'�=0:�SIEVE(C%):�"TIME SIEVEING ";�;
�5�ROUNDUP(C%):�;"  +  TIME HARVESTING PRIMES = ";�
�0�:�"TOTAL NUMBER OF PRIMES FOUND; ";N%:N%-=1
�[�:�"NOW TO FIND FACTORS. INPUT NUMBER MAX.";:� C%>46326 �" 2147483647 (2^31-1)":��C%*C%
�&�"INPUT NUMBER TO FACTORIZE;":@%=8
��:�:�"NUMBER";D%:�D%<4 �0
��FACTOR(D%,C%,N%):�0
� 
�Y� SIEVE OF ERASTOSTHENES. MULTIPLES OF 3 AND 5 ARE NOT ERASED AND NOT COUNTED EITHER.
�#��SIEVE(C%):� P%,Q%,S%,D%,Y%,Z%
�A%()=1:P%=1:Q%=6:S%=�C%
�
+�:Q%+=1:P%+=F%(Q%�8):�A%(P%):�P%>S% � �
.D%()=E%()*P%:D%=30*P%:D%()+=((P%-5)�30*D%)
"7�D%(7)<=C% �Y%=0�7:�Z%=D%(Y%)�C%�D%:A%(Z%)=0:�:�:�0
,5�Y%=0�6:�D%(Y%)<=C% �Z%=D%(Y%)�C%�D%:A%(Z%)=0:�:�
6�0
@�
J
T� HARVESTS ALL PRIMES
^��ROUNDUP(C%):� Q%
hP%()=2,3,5:N%=3
r+� Q%=7�C%-30�30:�A%(Q%) P%(N%)=Q%:N%+=1
|�A%(Q%+4)P%(N%)=Q%+4:N%+=1
��A%(Q%+6)P%(N%)=Q%+6:N%+=1
� �A%(Q%+10)P%(N%)=Q%+10:N%+=1
� �A%(Q%+12)P%(N%)=Q%+12:N%+=1
� �A%(Q%+16)P%(N%)=Q%+16:N%+=1
� �A%(Q%+22)P%(N%)=Q%+22:N%+=1
� �A%(Q%+24)P%(N%)=Q%+24:N%+=1
��
�"�Q%<C% �A%(Q%) P%(N%)=Q%:N%+=1
�(�Q%+4<C% �A%(Q%+4) P%(N%)=Q%+4:N%+=1
�(�Q%+6<C% �A%(Q%+6) P%(N%)=Q%+6:N%+=1
�+�Q%+10<C% �A%(Q%+10) P%(N%)=Q%+10:N%+=1
�+�Q%+12<C% �A%(Q%+12) P%(N%)=Q%+12:N%+=1
�+�Q%+16<C% �A%(Q%+16) P%(N%)=Q%+16:N%+=1
+�Q%+22<C% �A%(Q%+22) P%(N%)=Q%+22:N%+=1
+�Q%+24<C% �A%(Q%+24) P%(N%)=Q%+24:N%+=1
�
&
0J� ROUTINE TO FIND FACTORS OF INPUT NUMBER.  USES PRIMES IN ARRAY P%().
: ��FACTOR(D%,C%,N%):� A%,B%,Y
DB%=0:�"= ";
N-�:Y%=�D%:A%=Y%/�Y%+Y%/99+52:� A%>N% A%=N%
X#�B%=B%�A%:�D%�P%(B%)�:�;D%:�1:�
b/�;P%(B%);"*";:� A%>B% D%=D%/P%(B%):�D%>3 �0
l�;D%:�1
v�
� 
�I� TEST TO SET THE VALUES OF CONSTANTS USED IN PROCFACTOR. (INACTTIVE)
�0�0:Z%=0:V%=0:�Y%=44�46300�11:A%=Y%/�Y%+Y%/99
��B%=A%�C%:�Y%>N%(B%) �
��B%-A%<V% V%=B%-A%:U%=Y%
�>�69,Y%/40,2*(B%-A%):�69,Y%/40,111:�B%-A%>Z% Z%=B%-A%:W%=Y%
�)�Y%:�"LARGEST B%-A%=";Z%;" AT Y%=";W%
��
� 
�;� PRIME TEST FOR ALL ENTRIES IN ARRAY P%(). (INACTTIVE)
�3� X%=2 � N%-1:M%=0:�:� P%(M%)*P%(M%)>P%(X%) �:�
�8� P%(X%)�P%(M%)=0 �P%(X%);"NOT PRIME !  ";P%(M%):�:�
�M%+=1:�0
 
/� ERROR HANDLING WHEN INPUT NUMBER TOO BIG.
� �=20:�:�:�dH@
 �:�" AT LINE ";�:�
�
00000000  0d 00 0a 10 f4 20 3e 46  41 43 54 4f 52 49 53 45  |..... >FACTORISE|
00000010  0d 00 14 46 f4 20 4a 45  41 4e 20 56 41 4e 20 4d  |...F. JEAN VAN M|
00000020  4f 55 52 49 4b 20 4d 49  4c 4c 43 4f 54 54 41 47  |OURIK MILLCOTTAG|
00000030  45 20 44 45 52 57 59 44  44 20 41 4d 4d 41 4e 46  |E DERWYDD AMMANF|
00000040  4f 52 44 20 44 59 46 45  44 20 53 41 31 38 33 4c  |ORD DYFED SA183L|
00000050  51 20 20 55 4b 2e 0d 00  1e 05 20 0d 00 28 33 eb  |Q  UK..... ..(3.|
00000060  31 32 3a f1 22 50 52 49  4d 45 53 20 53 49 45 56  |12:."PRIMES SIEV|
00000070  45 2c 20 46 41 53 54 20  56 45 52 53 49 4f 4e 2e  |E, FAST VERSION.|
00000080  22 3a f1 3a ee 20 85 20  e5 20 8d 54 56 43 0d 00  |":.:. . . .TVC..|
00000090  32 1a f1 22 42 59 20 4a  45 41 4e 20 56 41 4e 20  |2.."BY JEAN VAN |
000000a0  4d 4f 55 52 49 4b 2e 22  0d 00 3c 39 f1 22 45 41  |MOURIK."..<9."EA|
000000b0  43 48 20 4d 55 4c 54 49  50 4c 45 20 4f 46 20 41  |CH MULTIPLE OF A|
000000c0  20 50 52 49 4d 45 20 49  53 20 45 52 41 53 45 44  | PRIME IS ERASED|
000000d0  20 46 52 4f 4d 20 54 48  45 20 41 52 52 41 59 2e  | FROM THE ARRAY.|
000000e0  22 0d 00 46 85 f1 22 54  48 45 4e 20 48 41 52 56  |"..F.."THEN HARV|
000000f0  45 53 54 53 20 54 48 45  20 50 52 49 4d 45 53 20  |ESTS THE PRIMES |
00000100  46 52 4f 4d 20 54 48 41  54 20 41 52 52 41 59 2e  |FROM THAT ARRAY.|
00000110  22 3a f1 22 54 48 45 4e  20 41 4c 4c 4f 57 53 20  |":."THEN ALLOWS |
00000120  54 4f 20 46 49 4e 44 20  46 41 43 54 4f 52 53 20  |TO FIND FACTORS |
00000130  4f 46 20 41 4e 59 20 4e  55 4d 42 45 52 2e 22 3a  |OF ANY NUMBER.":|
00000140  f1 22 4d 45 54 48 4f 44  20 55 53 45 44 3b 20 53  |."METHOD USED; S|
00000150  49 45 56 45 20 4f 46 20  45 52 41 54 4f 53 54 48  |IEVE OF ERATOSTH|
00000160  45 4e 45 53 2e 22 0d 00  50 46 f1 22 57 49 54 48  |ENES."..PF."WITH|
00000170  20 50 52 49 4d 45 53 20  55 50 20 54 4f 20 4e 2c  | PRIMES UP TO N,|
00000180  20 46 41 43 54 4f 52 53  20 4f 46 20 4e 55 4d 42  | FACTORS OF NUMB|
00000190  45 52 53 20 55 50 20 54  4f 20 4e 2a 4e 20 43 41  |ERS UP TO N*N CA|
000001a0  4e 20 42 45 20 46 4f 55  4e 44 2e 22 0d 00 5a 3f  |N BE FOUND."..Z?|
000001b0  43 25 3d 34 36 33 33 33  3a f1 22 4e 20 3d 20 22  |C%=46333:."N = "|
000001c0  3b 43 25 3a f4 20 34 36  33 32 37 5e 32 20 49 53  |;C%:. 46327^2 IS|
000001d0  20 54 48 45 20 4d 41 58  49 4d 55 4d 20 49 4e 54  | THE MAXIMUM INT|
000001e0  45 47 45 52 20 56 41 4c  55 45 2e 0d 00 64 7a f4  |EGER VALUE...dz.|
000001f0  20 53 49 45 56 45 20 41  52 52 41 59 20 41 25 28  | SIEVE ARRAY A%(|
00000200  29 20 50 52 49 4d 45 20  28 31 29 20 4f 52 20 43  |) PRIME (1) OR C|
00000210  4f 4d 50 4f 53 49 54 45  20 28 30 29 20 46 4f 52  |OMPOSITE (0) FOR|
00000220  20 41 4c 4c 20 4e 55 4d  42 45 52 53 2c 20 50 25  | ALL NUMBERS, P%|
00000230  28 29 20 57 49 4c 4c 20  43 4f 4e 54 41 49 4e 20  |() WILL CONTAIN |
00000240  50 52 49 4d 45 53 20 41  46 54 45 52 20 54 48 45  |PRIMES AFTER THE|
00000250  20 52 4f 55 54 49 4e 45  20 49 53 20 46 49 4e 49  | ROUTINE IS FINI|
00000260  53 48 45 44 2e 0d 00 6e  26 de 41 25 28 43 25 29  |SHED...n&.A%(C%)|
00000270  2c 50 25 28 43 25 2f 37  29 2c 44 25 28 37 29 2c  |,P%(C%/7),D%(7),|
00000280  45 25 28 37 29 2c 46 25  28 37 29 0d 00 78 34 45  |E%(7),F%(7)..x4E|
00000290  25 28 29 3d 37 2c 31 31  2c 31 33 2c 31 37 2c 31  |%()=7,11,13,17,1|
000002a0  39 2c 32 33 2c 32 39 2c  33 31 3a 46 25 28 29 3d  |9,23,29,31:F%()=|
000002b0  34 2c 32 2c 34 2c 32 2c  34 2c 36 2c 32 2c 36 0d  |4,2,4,2,4,6,2,6.|
000002c0  00 82 05 20 0d 00 8c 1a  f1 3a f1 22 43 41 4c 43  |... .....:."CALC|
000002d0  55 4c 41 54 49 4e 47 2e  2e 2e 2e 2e 2e 22 0d 00  |ULATING......"..|
000002e0  96 27 d1 3d 30 3a f2 53  49 45 56 45 28 43 25 29  |.'.=0:.SIEVE(C%)|
000002f0  3a f1 22 54 49 4d 45 20  53 49 45 56 45 49 4e 47  |:."TIME SIEVEING|
00000300  20 22 3b 91 3b 0d 00 a0  35 f2 52 4f 55 4e 44 55  | ";.;...5.ROUNDU|
00000310  50 28 43 25 29 3a f1 3b  22 20 20 2b 20 20 54 49  |P(C%):.;"  +  TI|
00000320  4d 45 20 48 41 52 56 45  53 54 49 4e 47 20 50 52  |ME HARVESTING PR|
00000330  49 4d 45 53 20 3d 20 22  3b 91 0d 00 aa 30 f1 3a  |IMES = ";....0.:|
00000340  f1 22 54 4f 54 41 4c 20  4e 55 4d 42 45 52 20 4f  |."TOTAL NUMBER O|
00000350  46 20 50 52 49 4d 45 53  20 46 4f 55 4e 44 3b 20  |F PRIMES FOUND; |
00000360  22 3b 4e 25 3a 4e 25 2d  3d 31 0d 00 b4 5b f1 3a  |";N%:N%-=1...[.:|
00000370  f1 22 4e 4f 57 20 54 4f  20 46 49 4e 44 20 46 41  |."NOW TO FIND FA|
00000380  43 54 4f 52 53 2e 20 49  4e 50 55 54 20 4e 55 4d  |CTORS. INPUT NUM|
00000390  42 45 52 20 4d 41 58 2e  22 3b 3a e7 20 43 25 3e  |BER MAX.";:. C%>|
000003a0  34 36 33 32 36 20 f1 22  20 32 31 34 37 34 38 33  |46326 ." 2147483|
000003b0  36 34 37 20 28 32 5e 33  31 2d 31 29 22 3a 8b f1  |647 (2^31-1)":..|
000003c0  43 25 2a 43 25 0d 00 be  26 f1 22 49 4e 50 55 54  |C%*C%...&."INPUT|
000003d0  20 4e 55 4d 42 45 52 20  54 4f 20 46 41 43 54 4f  | NUMBER TO FACTO|
000003e0  52 49 5a 45 3b 22 3a 40  25 3d 38 0d 00 c8 1d f5  |RIZE;":@%=8.....|
000003f0  3a f1 3a e8 22 4e 55 4d  42 45 52 22 3b 44 25 3a  |:.:."NUMBER";D%:|
00000400  e7 44 25 3c 34 20 fd 30  0d 00 d2 18 f2 46 41 43  |.D%<4 .0.....FAC|
00000410  54 4f 52 28 44 25 2c 43  25 2c 4e 25 29 3a fd 30  |TOR(D%,C%,N%):.0|
00000420  0d 00 dc 05 20 0d 00 e6  59 f4 20 53 49 45 56 45  |.... ...Y. SIEVE|
00000430  20 4f 46 20 45 52 41 53  54 4f 53 54 48 45 4e 45  | OF ERASTOSTHENE|
00000440  53 2e 20 4d 55 4c 54 49  50 4c 45 53 20 4f 46 20  |S. MULTIPLES OF |
00000450  33 20 41 4e 44 20 35 20  41 52 45 20 4e 4f 54 20  |3 AND 5 ARE NOT |
00000460  45 52 41 53 45 44 20 41  4e 44 20 4e 4f 54 20 43  |ERASED AND NOT C|
00000470  4f 55 4e 54 45 44 20 45  49 54 48 45 52 2e 0d 00  |OUNTED EITHER...|
00000480  f0 23 dd f2 53 49 45 56  45 28 43 25 29 3a ea 20  |.#..SIEVE(C%):. |
00000490  50 25 2c 51 25 2c 53 25  2c 44 25 2c 59 25 2c 5a  |P%,Q%,S%,D%,Y%,Z|
000004a0  25 0d 00 fa 1b 41 25 28  29 3d 31 3a 50 25 3d 31  |%....A%()=1:P%=1|
000004b0  3a 51 25 3d 36 3a 53 25  3d b6 43 25 0d 01 04 05  |:Q%=6:S%=.C%....|
000004c0  f5 0d 01 0e 2b f5 3a 51  25 2b 3d 31 3a 50 25 2b  |....+.:Q%+=1:P%+|
000004d0  3d 46 25 28 51 25 83 38  29 3a fd 41 25 28 50 25  |=F%(Q%.8):.A%(P%|
000004e0  29 3a e7 50 25 3e 53 25  20 8c 20 e1 0d 01 18 2e  |):.P%>S% . .....|
000004f0  44 25 28 29 3d 45 25 28  29 2a 50 25 3a 44 25 3d  |D%()=E%()*P%:D%=|
00000500  33 30 2a 50 25 3a 44 25  28 29 2b 3d 28 28 50 25  |30*P%:D%()+=((P%|
00000510  2d 35 29 81 33 30 2a 44  25 29 0d 01 22 37 e7 44  |-5).30*D%).."7.D|
00000520  25 28 37 29 3c 3d 43 25  20 e3 59 25 3d 30 b8 37  |%(7)<=C% .Y%=0.7|
00000530  3a e3 5a 25 3d 44 25 28  59 25 29 b8 43 25 88 44  |:.Z%=D%(Y%).C%.D|
00000540  25 3a 41 25 28 5a 25 29  3d 30 3a ed 3a ed 3a fd  |%:A%(Z%)=0:.:.:.|
00000550  30 0d 01 2c 35 e3 59 25  3d 30 b8 36 3a e7 44 25  |0..,5.Y%=0.6:.D%|
00000560  28 59 25 29 3c 3d 43 25  20 e3 5a 25 3d 44 25 28  |(Y%)<=C% .Z%=D%(|
00000570  59 25 29 b8 43 25 88 44  25 3a 41 25 28 5a 25 29  |Y%).C%.D%:A%(Z%)|
00000580  3d 30 3a ed 3a ed 0d 01  36 06 fd 30 0d 01 40 05  |=0:.:...6..0..@.|
00000590  e1 0d 01 4a 04 0d 01 54  19 f4 20 48 41 52 56 45  |...J...T.. HARVE|
000005a0  53 54 53 20 41 4c 4c 20  50 52 49 4d 45 53 0d 01  |STS ALL PRIMES..|
000005b0  5e 16 dd f2 52 4f 55 4e  44 55 50 28 43 25 29 3a  |^...ROUNDUP(C%):|
000005c0  ea 20 51 25 0d 01 68 13  50 25 28 29 3d 32 2c 33  |. Q%..h.P%()=2,3|
000005d0  2c 35 3a 4e 25 3d 33 0d  01 72 2b e3 20 51 25 3d  |,5:N%=3..r+. Q%=|
000005e0  37 b8 43 25 2d 33 30 88  33 30 3a e7 41 25 28 51  |7.C%-30.30:.A%(Q|
000005f0  25 29 20 50 25 28 4e 25  29 3d 51 25 3a 4e 25 2b  |%) P%(N%)=Q%:N%+|
00000600  3d 31 0d 01 7c 1e e7 41  25 28 51 25 2b 34 29 50  |=1..|..A%(Q%+4)P|
00000610  25 28 4e 25 29 3d 51 25  2b 34 3a 4e 25 2b 3d 31  |%(N%)=Q%+4:N%+=1|
00000620  0d 01 86 1e e7 41 25 28  51 25 2b 36 29 50 25 28  |.....A%(Q%+6)P%(|
00000630  4e 25 29 3d 51 25 2b 36  3a 4e 25 2b 3d 31 0d 01  |N%)=Q%+6:N%+=1..|
00000640  90 20 e7 41 25 28 51 25  2b 31 30 29 50 25 28 4e  |. .A%(Q%+10)P%(N|
00000650  25 29 3d 51 25 2b 31 30  3a 4e 25 2b 3d 31 0d 01  |%)=Q%+10:N%+=1..|
00000660  9a 20 e7 41 25 28 51 25  2b 31 32 29 50 25 28 4e  |. .A%(Q%+12)P%(N|
00000670  25 29 3d 51 25 2b 31 32  3a 4e 25 2b 3d 31 0d 01  |%)=Q%+12:N%+=1..|
00000680  a4 20 e7 41 25 28 51 25  2b 31 36 29 50 25 28 4e  |. .A%(Q%+16)P%(N|
00000690  25 29 3d 51 25 2b 31 36  3a 4e 25 2b 3d 31 0d 01  |%)=Q%+16:N%+=1..|
000006a0  ae 20 e7 41 25 28 51 25  2b 32 32 29 50 25 28 4e  |. .A%(Q%+22)P%(N|
000006b0  25 29 3d 51 25 2b 32 32  3a 4e 25 2b 3d 31 0d 01  |%)=Q%+22:N%+=1..|
000006c0  b8 20 e7 41 25 28 51 25  2b 32 34 29 50 25 28 4e  |. .A%(Q%+24)P%(N|
000006d0  25 29 3d 51 25 2b 32 34  3a 4e 25 2b 3d 31 0d 01  |%)=Q%+24:N%+=1..|
000006e0  c2 05 ed 0d 01 cc 22 e7  51 25 3c 43 25 20 e7 41  |......".Q%<C% .A|
000006f0  25 28 51 25 29 20 50 25  28 4e 25 29 3d 51 25 3a  |%(Q%) P%(N%)=Q%:|
00000700  4e 25 2b 3d 31 0d 01 d6  28 e7 51 25 2b 34 3c 43  |N%+=1...(.Q%+4<C|
00000710  25 20 e7 41 25 28 51 25  2b 34 29 20 50 25 28 4e  |% .A%(Q%+4) P%(N|
00000720  25 29 3d 51 25 2b 34 3a  4e 25 2b 3d 31 0d 01 e0  |%)=Q%+4:N%+=1...|
00000730  28 e7 51 25 2b 36 3c 43  25 20 e7 41 25 28 51 25  |(.Q%+6<C% .A%(Q%|
00000740  2b 36 29 20 50 25 28 4e  25 29 3d 51 25 2b 36 3a  |+6) P%(N%)=Q%+6:|
00000750  4e 25 2b 3d 31 0d 01 ea  2b e7 51 25 2b 31 30 3c  |N%+=1...+.Q%+10<|
00000760  43 25 20 e7 41 25 28 51  25 2b 31 30 29 20 50 25  |C% .A%(Q%+10) P%|
00000770  28 4e 25 29 3d 51 25 2b  31 30 3a 4e 25 2b 3d 31  |(N%)=Q%+10:N%+=1|
00000780  0d 01 f4 2b e7 51 25 2b  31 32 3c 43 25 20 e7 41  |...+.Q%+12<C% .A|
00000790  25 28 51 25 2b 31 32 29  20 50 25 28 4e 25 29 3d  |%(Q%+12) P%(N%)=|
000007a0  51 25 2b 31 32 3a 4e 25  2b 3d 31 0d 01 fe 2b e7  |Q%+12:N%+=1...+.|
000007b0  51 25 2b 31 36 3c 43 25  20 e7 41 25 28 51 25 2b  |Q%+16<C% .A%(Q%+|
000007c0  31 36 29 20 50 25 28 4e  25 29 3d 51 25 2b 31 36  |16) P%(N%)=Q%+16|
000007d0  3a 4e 25 2b 3d 31 0d 02  08 2b e7 51 25 2b 32 32  |:N%+=1...+.Q%+22|
000007e0  3c 43 25 20 e7 41 25 28  51 25 2b 32 32 29 20 50  |<C% .A%(Q%+22) P|
000007f0  25 28 4e 25 29 3d 51 25  2b 32 32 3a 4e 25 2b 3d  |%(N%)=Q%+22:N%+=|
00000800  31 0d 02 12 2b e7 51 25  2b 32 34 3c 43 25 20 e7  |1...+.Q%+24<C% .|
00000810  41 25 28 51 25 2b 32 34  29 20 50 25 28 4e 25 29  |A%(Q%+24) P%(N%)|
00000820  3d 51 25 2b 32 34 3a 4e  25 2b 3d 31 0d 02 1c 05  |=Q%+24:N%+=1....|
00000830  e1 0d 02 26 04 0d 02 30  4a f4 20 52 4f 55 54 49  |...&...0J. ROUTI|
00000840  4e 45 20 54 4f 20 46 49  4e 44 20 46 41 43 54 4f  |NE TO FIND FACTO|
00000850  52 53 20 4f 46 20 49 4e  50 55 54 20 4e 55 4d 42  |RS OF INPUT NUMB|
00000860  45 52 2e 20 20 55 53 45  53 20 50 52 49 4d 45 53  |ER.  USES PRIMES|
00000870  20 49 4e 20 41 52 52 41  59 20 50 25 28 29 2e 0d  | IN ARRAY P%()..|
00000880  02 3a 20 dd f2 46 41 43  54 4f 52 28 44 25 2c 43  |.: ..FACTOR(D%,C|
00000890  25 2c 4e 25 29 3a ea 20  41 25 2c 42 25 2c 59 0d  |%,N%):. A%,B%,Y.|
000008a0  02 44 0f 42 25 3d 30 3a  f1 22 3d 20 22 3b 0d 02  |.D.B%=0:."= ";..|
000008b0  4e 2d f5 3a 59 25 3d b6  44 25 3a 41 25 3d 59 25  |N-.:Y%=.D%:A%=Y%|
000008c0  2f aa 59 25 2b 59 25 2f  39 39 2b 35 32 3a e7 20  |/.Y%+Y%/99+52:. |
000008d0  41 25 3e 4e 25 20 41 25  3d 4e 25 0d 02 58 23 e3  |A%>N% A%=N%..X#.|
000008e0  42 25 3d 42 25 b8 41 25  3a e7 44 25 83 50 25 28  |B%=B%.A%:.D%.P%(|
000008f0  42 25 29 ed 3a f1 3b 44  25 3a fd 31 3a e1 0d 02  |B%).:.;D%:.1:...|
00000900  62 2f f1 3b 50 25 28 42  25 29 3b 22 2a 22 3b 3a  |b/.;P%(B%);"*";:|
00000910  e7 20 41 25 3e 42 25 20  44 25 3d 44 25 2f 50 25  |. A%>B% D%=D%/P%|
00000920  28 42 25 29 3a e7 44 25  3e 33 20 fd 30 0d 02 6c  |(B%):.D%>3 .0..l|
00000930  0b f1 3b 44 25 3a fd 31  0d 02 76 05 e1 0d 02 80  |..;D%:.1..v.....|
00000940  05 20 0d 02 8a 49 f4 20  54 45 53 54 20 54 4f 20  |. ...I. TEST TO |
00000950  53 45 54 20 54 48 45 20  56 41 4c 55 45 53 20 4f  |SET THE VALUES O|
00000960  46 20 43 4f 4e 53 54 41  4e 54 53 20 55 53 45 44  |F CONSTANTS USED|
00000970  20 49 4e 20 50 52 4f 43  46 41 43 54 4f 52 2e 20  | IN PROCFACTOR. |
00000980  28 49 4e 41 43 54 54 49  56 45 29 0d 02 94 30 eb  |(INACTTIVE)...0.|
00000990  30 3a 5a 25 3d 30 3a 56  25 3d 30 3a e3 59 25 3d  |0:Z%=0:V%=0:.Y%=|
000009a0  34 34 b8 34 36 33 30 30  88 31 31 3a 41 25 3d 59  |44.46300.11:A%=Y|
000009b0  25 2f aa 59 25 2b 59 25  2f 39 39 0d 02 9e 1a e3  |%/.Y%+Y%/99.....|
000009c0  42 25 3d 41 25 b8 43 25  3a e7 59 25 3e 4e 25 28  |B%=A%.C%:.Y%>N%(|
000009d0  42 25 29 20 ed 0d 02 a8  1c e7 42 25 2d 41 25 3c  |B%) ......B%-A%<|
000009e0  56 25 20 56 25 3d 42 25  2d 41 25 3a 55 25 3d 59  |V% V%=B%-A%:U%=Y|
000009f0  25 0d 02 b2 3e f0 36 39  2c 59 25 2f 34 30 2c 32  |%...>.69,Y%/40,2|
00000a00  2a 28 42 25 2d 41 25 29  3a f0 36 39 2c 59 25 2f  |*(B%-A%):.69,Y%/|
00000a10  34 30 2c 31 31 31 3a e7  42 25 2d 41 25 3e 5a 25  |40,111:.B%-A%>Z%|
00000a20  20 5a 25 3d 42 25 2d 41  25 3a 57 25 3d 59 25 0d  | Z%=B%-A%:W%=Y%.|
00000a30  02 bc 29 ed 59 25 3a f1  22 4c 41 52 47 45 53 54  |..).Y%:."LARGEST|
00000a40  20 42 25 2d 41 25 3d 22  3b 5a 25 3b 22 20 41 54  | B%-A%=";Z%;" AT|
00000a50  20 59 25 3d 22 3b 57 25  0d 02 c6 05 e0 0d 02 d0  | Y%=";W%........|
00000a60  05 20 0d 02 da 3b f4 20  50 52 49 4d 45 20 54 45  |. ...;. PRIME TE|
00000a70  53 54 20 46 4f 52 20 41  4c 4c 20 45 4e 54 52 49  |ST FOR ALL ENTRI|
00000a80  45 53 20 49 4e 20 41 52  52 41 59 20 50 25 28 29  |ES IN ARRAY P%()|
00000a90  2e 20 28 49 4e 41 43 54  54 49 56 45 29 0d 02 e4  |. (INACTTIVE)...|
00000aa0  33 e3 20 58 25 3d 32 20  b8 20 4e 25 2d 31 3a 4d  |3. X%=2 . N%-1:M|
00000ab0  25 3d 30 3a f5 3a e7 20  50 25 28 4d 25 29 2a 50  |%=0:.:. P%(M%)*P|
00000ac0  25 28 4d 25 29 3e 50 25  28 58 25 29 20 ed 3a e0  |%(M%)>P%(X%) .:.|
00000ad0  0d 02 ee 38 e7 20 50 25  28 58 25 29 83 50 25 28  |...8. P%(X%).P%(|
00000ae0  4d 25 29 3d 30 20 f1 50  25 28 58 25 29 3b 22 4e  |M%)=0 .P%(X%);"N|
00000af0  4f 54 20 50 52 49 4d 45  20 21 20 20 22 3b 50 25  |OT PRIME !  ";P%|
00000b00  28 4d 25 29 3a ed 3a e0  0d 02 f8 0c 4d 25 2b 3d  |(M%):.:.....M%+=|
00000b10  31 3a fd 30 0d 03 02 05  20 0d 03 0c 2f f4 20 45  |1:.0.... .../. E|
00000b20  52 52 4f 52 20 48 41 4e  44 4c 49 4e 47 20 57 48  |RROR HANDLING WH|
00000b30  45 4e 20 49 4e 50 55 54  20 4e 55 4d 42 45 52 20  |EN INPUT NUMBER |
00000b40  54 4f 4f 20 42 49 47 2e  0d 03 16 14 e7 20 9f 3d  |TOO BIG...... .=|
00000b50  32 30 3a f6 3a f1 3a e5  8d 64 48 40 0d 03 20 16  |20:.:.:..dH@.. .|
00000b60  f6 3a f1 22 20 41 54 20  4c 49 4e 45 20 22 3b 9e  |.:." AT LINE ";.|
00000b70  3a e0 0d ff                                       |:...|
00000b74