Home » Archimedes archive » Archimedes World » AW-1997-02.adf » !AcornAns_AcornAns » Prime/Primes1

Prime/Primes1

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 » Archimedes World » AW-1997-02.adf » !AcornAns_AcornAns
Filename: Prime/Primes1
Read OK:
File size: 0337 bytes
Load address: 0000
Exec address: 0000
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
   10maxn=2^32
   20np%=23+1.115*2*SQR(maxn)/LN(maxn) :REM approx upper bound on #primes<=SQR(maxn)
   30DIM multiple%(np%-1), p%(np%-1)
   40:
   50n%=32768
   60PROCprimes(n%)
   70:
   80END
   90:
  100:
  110DEF PROCprimes(n%)
  120anp%=0
  130IF n%<=1 ENDPROC
  140p%(0)=2:p%(1)=3:p%(2)=5:i%=2
  150IF n%<5 FOR j%=0 TO (n%-1)DIV2:PRINT p%(j%):anp%+=1:NEXT:ENDPROC
  160FOR j%=0 TO 2:PRINT p%(j%):anp%+=1:NEXT
  170x%=5:plimsq%=25:limit%=2:dx%=2
  180rootn%=INT SQR(n%)
  190:
  200WHILE TRUE
  210 x%+=dx%
  220 IF x%>n% ENDPROC
  230 dx%=6-dx%
  240 IF limit%<=i% THEN
  250  IF x%>=plimsq% THEN
  260   multiple%(limit%)=plimsq%
  270   limit%+=1
  280   IF limit%<=i% plimsq%=p%(limit%)*p%(limit%)
  290  ENDIF
  300 ENDIF
  310 prime%=TRUE
  320 j%=2
  330 WHILE prime% AND (j%<limit%)
  340  WHILE multiple%(j%)<x% multiple%(j%)+=2*p%(j%):ENDWHILE
  350  prime%=x%<>multiple%(j%)
  360  j%+=1
  370 ENDWHILE
  380 IF prime% THEN
  390  PRINT x%:anp%+=1
  400  IF x%<=rootn% i%+=1:p%(i%)=x%
  410 ENDIF
  420ENDWHILE
  430:
  440ENDPROC


maxn=2^32
Nnp%=23+1.115*2*�(maxn)/�(maxn) :� approx upper bound on #primes<=SQR(maxn)
!� multiple%(np%-1), p%(np%-1)
(:
2n%=32768
<�primes(n%)
F:
P�
Z:
d:
n� �primes(n%)
x
anp%=0
�
� n%<=1 �
� p%(0)=2:p%(1)=3:p%(2)=5:i%=2
�1� n%<5 � j%=0 � (n%-1)�2:� p%(j%):anp%+=1:�:�
�!� j%=0 � 2:� p%(j%):anp%+=1:�
�"x%=5:plimsq%=25:limit%=2:dx%=2
�rootn%=� �(n%)
�:
�ȕ �
� x%+=dx%
� � x%>n% �
� dx%=6-dx%
� � limit%<=i% �
�  � x%>=plimsq% �
    multiple%(limit%)=plimsq%
   limit%+=1
1   � limit%<=i% plimsq%=p%(limit%)*p%(limit%)
"  �
, �
6
 prime%=�
@	 j%=2
J ȕ prime% � (j%<limit%)
T3  ȕ multiple%(j%)<x% multiple%(j%)+=2*p%(j%):�
^  prime%=x%<>multiple%(j%)
h  j%+=1
r �
| � prime% �
�  � x%:anp%+=1
�"  � x%<=rootn% i%+=1:p%(i%)=x%
� �
��
�:
��
�
00000000  0d 00 0a 0d 6d 61 78 6e  3d 32 5e 33 32 0d 00 14  |....maxn=2^32...|
00000010  4e 6e 70 25 3d 32 33 2b  31 2e 31 31 35 2a 32 2a  |Nnp%=23+1.115*2*|
00000020  b6 28 6d 61 78 6e 29 2f  aa 28 6d 61 78 6e 29 20  |.(maxn)/.(maxn) |
00000030  3a f4 20 61 70 70 72 6f  78 20 75 70 70 65 72 20  |:. approx upper |
00000040  62 6f 75 6e 64 20 6f 6e  20 23 70 72 69 6d 65 73  |bound on #primes|
00000050  3c 3d 53 51 52 28 6d 61  78 6e 29 0d 00 1e 21 de  |<=SQR(maxn)...!.|
00000060  20 6d 75 6c 74 69 70 6c  65 25 28 6e 70 25 2d 31  | multiple%(np%-1|
00000070  29 2c 20 70 25 28 6e 70  25 2d 31 29 0d 00 28 05  |), p%(np%-1)..(.|
00000080  3a 0d 00 32 0c 6e 25 3d  33 32 37 36 38 0d 00 3c  |:..2.n%=32768..<|
00000090  0f f2 70 72 69 6d 65 73  28 6e 25 29 0d 00 46 05  |..primes(n%)..F.|
000000a0  3a 0d 00 50 05 e0 0d 00  5a 05 3a 0d 00 64 05 3a  |:..P....Z.:..d.:|
000000b0  0d 00 6e 11 dd 20 f2 70  72 69 6d 65 73 28 6e 25  |..n.. .primes(n%|
000000c0  29 0d 00 78 0a 61 6e 70  25 3d 30 0d 00 82 0d e7  |)..x.anp%=0.....|
000000d0  20 6e 25 3c 3d 31 20 e1  0d 00 8c 20 70 25 28 30  | n%<=1 .... p%(0|
000000e0  29 3d 32 3a 70 25 28 31  29 3d 33 3a 70 25 28 32  |)=2:p%(1)=3:p%(2|
000000f0  29 3d 35 3a 69 25 3d 32  0d 00 96 31 e7 20 6e 25  |)=5:i%=2...1. n%|
00000100  3c 35 20 e3 20 6a 25 3d  30 20 b8 20 28 6e 25 2d  |<5 . j%=0 . (n%-|
00000110  31 29 81 32 3a f1 20 70  25 28 6a 25 29 3a 61 6e  |1).2:. p%(j%):an|
00000120  70 25 2b 3d 31 3a ed 3a  e1 0d 00 a0 21 e3 20 6a  |p%+=1:.:....!. j|
00000130  25 3d 30 20 b8 20 32 3a  f1 20 70 25 28 6a 25 29  |%=0 . 2:. p%(j%)|
00000140  3a 61 6e 70 25 2b 3d 31  3a ed 0d 00 aa 22 78 25  |:anp%+=1:...."x%|
00000150  3d 35 3a 70 6c 69 6d 73  71 25 3d 32 35 3a 6c 69  |=5:plimsq%=25:li|
00000160  6d 69 74 25 3d 32 3a 64  78 25 3d 32 0d 00 b4 12  |mit%=2:dx%=2....|
00000170  72 6f 6f 74 6e 25 3d a8  20 b6 28 6e 25 29 0d 00  |rootn%=. .(n%)..|
00000180  be 05 3a 0d 00 c8 08 c8  95 20 b9 0d 00 d2 0c 20  |..:...... ..... |
00000190  78 25 2b 3d 64 78 25 0d  00 dc 0e 20 e7 20 78 25  |x%+=dx%.... . x%|
000001a0  3e 6e 25 20 e1 0d 00 e6  0e 20 64 78 25 3d 36 2d  |>n% ..... dx%=6-|
000001b0  64 78 25 0d 00 f0 13 20  e7 20 6c 69 6d 69 74 25  |dx%.... . limit%|
000001c0  3c 3d 69 25 20 8c 0d 00  fa 15 20 20 e7 20 78 25  |<=i% .....  . x%|
000001d0  3e 3d 70 6c 69 6d 73 71  25 20 8c 0d 01 04 20 20  |>=plimsq% ....  |
000001e0  20 20 6d 75 6c 74 69 70  6c 65 25 28 6c 69 6d 69  |  multiple%(limi|
000001f0  74 25 29 3d 70 6c 69 6d  73 71 25 0d 01 0e 10 20  |t%)=plimsq%.... |
00000200  20 20 6c 69 6d 69 74 25  2b 3d 31 0d 01 18 31 20  |  limit%+=1...1 |
00000210  20 20 e7 20 6c 69 6d 69  74 25 3c 3d 69 25 20 70  |  . limit%<=i% p|
00000220  6c 69 6d 73 71 25 3d 70  25 28 6c 69 6d 69 74 25  |limsq%=p%(limit%|
00000230  29 2a 70 25 28 6c 69 6d  69 74 25 29 0d 01 22 07  |)*p%(limit%)..".|
00000240  20 20 cd 0d 01 2c 06 20  cd 0d 01 36 0d 20 70 72  |  ...,. ...6. pr|
00000250  69 6d 65 25 3d b9 0d 01  40 09 20 6a 25 3d 32 0d  |ime%=...@. j%=2.|
00000260  01 4a 1c 20 c8 95 20 70  72 69 6d 65 25 20 80 20  |.J. .. prime% . |
00000270  28 6a 25 3c 6c 69 6d 69  74 25 29 0d 01 54 33 20  |(j%<limit%)..T3 |
00000280  20 c8 95 20 6d 75 6c 74  69 70 6c 65 25 28 6a 25  | .. multiple%(j%|
00000290  29 3c 78 25 20 6d 75 6c  74 69 70 6c 65 25 28 6a  |)<x% multiple%(j|
000002a0  25 29 2b 3d 32 2a 70 25  28 6a 25 29 3a ce 0d 01  |%)+=2*p%(j%):...|
000002b0  5e 1e 20 20 70 72 69 6d  65 25 3d 78 25 3c 3e 6d  |^.  prime%=x%<>m|
000002c0  75 6c 74 69 70 6c 65 25  28 6a 25 29 0d 01 68 0b  |ultiple%(j%)..h.|
000002d0  20 20 6a 25 2b 3d 31 0d  01 72 06 20 ce 0d 01 7c  |  j%+=1..r. ...||
000002e0  0f 20 e7 20 70 72 69 6d  65 25 20 8c 0d 01 86 12  |. . prime% .....|
000002f0  20 20 f1 20 78 25 3a 61  6e 70 25 2b 3d 31 0d 01  |  . x%:anp%+=1..|
00000300  90 22 20 20 e7 20 78 25  3c 3d 72 6f 6f 74 6e 25  |."  . x%<=rootn%|
00000310  20 69 25 2b 3d 31 3a 70  25 28 69 25 29 3d 78 25  | i%+=1:p%(i%)=x%|
00000320  0d 01 9a 06 20 cd 0d 01  a4 05 ce 0d 01 ae 05 3a  |.... ..........:|
00000330  0d 01 b8 05 e1 0d ff                              |.......|
00000337