annotate scripts/elfun/lcm.m @ 715:6544b83ef9e9

[project @ 1994-09-20 18:40:02 by jwe] Initial revision
author jwe
date Tue, 20 Sep 1994 18:40:02 +0000
parents
children 3470f1e25a79
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
715
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
1 function l = lcm (a, ...)
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
2
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
3 # lcm (a) returns the least common multiple of the entries of the
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
4 # integer vector a.
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
5 # lcm (a1, ..., ak) is the same as lcm([a1, ..., ak]).
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
6
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
7 # Written by KH (Kurt.Hornik@ci.tuwien.ac.at) on Sep 16, 1994
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
8 # Copyright Dept of Statistics and Probability Theory TU Wien
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
9
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
10 if (nargin > 1)
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
11 va_start;
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
12 for k=2:nargin;
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
13 a = [a, va_arg()];
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
14 endfor
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
15 endif
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
16
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
17 if (round(a) != a)
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
18 error("lcm: all arguments must be integer");
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
19 endif
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
20
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
21 if (any(a) == 0)
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
22 l = 0;
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
23 else
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
24 a = abs(a);
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
25 l = a(1);
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
26 for k=1:(length(a)-1)
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
27 l = l * a(k+1) / gcd(l, a(k+1));
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
28 endfor
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
29 endif
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
30
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
31 endfunction
6544b83ef9e9 [project @ 1994-09-20 18:40:02 by jwe]
jwe
parents:
diff changeset
32