comparison scripts/miscellaneous/list_primes.m @ 68:46807fe3db5b

[project @ 1993-08-19 02:50:52 by jwe] Initial revision
author jwe
date Thu, 19 Aug 1993 02:50:52 +0000
parents
children 16a24e76d6e0
comparison
equal deleted inserted replaced
67:2876864f1fdb 68:46807fe3db5b
1 function retval = list_primes (n)
2
3 # usage: list_primes (n)
4 #
5 # List the first n primes. If n is unspecified, the first 30 primes
6 # are listed.
7 #
8 # The algorithm used is from page 218 of the TeXbook.
9
10 if (nargin > 0)
11 if (! is_scalar (n))
12 error ("list_primes: argument must be a scalar");
13 endif
14 endif
15
16 if (nargin == 0)
17 n = 30;
18 endif
19
20 if (n == 1)
21 retval = 2;
22 return;
23 endif
24
25 if (n == 2)
26 retval = [2; 3];
27 return;
28 endif
29
30 retval = zeros (1, n);
31 retval (1) = 2;
32 retval (2) = 3;
33
34 n = n - 2;
35 i = 3;
36 p = 5;
37 while (n > 0)
38
39 is_prime = 1;
40 is_unknown = 1;
41 d = 3;
42 while (is_unknown)
43 a = fix (p / d);
44 if (a <= d)
45 is_unknown = 0;
46 endif
47 if (a * d == p)
48 is_prime = 0;
49 is_unknown = 0;
50 endif
51 d = d + 2;
52 endwhile
53
54 if (is_prime)
55 retval (i++) = p;
56 n--;
57 endif
58 p = p + 2;
59
60 endwhile
61
62 endfunction