// lcm().
// General includes.
#include "cl_sysdep.h"
// Specification.
#include "cln/integer.h"
// Implementation.
#include "cl_I.h"
namespace cln {
const cl_I lcm (const cl_I& a, const cl_I& b)
{
// Methode:
// a=0 oder b=0 -> Ergebnis 0.
// a:=(abs a), b:=(abs b).
// g:=ggT(a,b)>0.
// Falls g=1, Ergebnis a*b, sonst Ergebnis (a/g)*b.
if (eq(a,0)) { return 0; }
if (eq(b,0)) { return 0; }
// Beträge nehmen:
{var cl_I abs_a = abs(a);
var cl_I abs_b = abs(b);
var cl_I& a = abs_a;
var cl_I& b = abs_b;
var cl_I g = gcd(a,b);
if (!eq(g,1)) { a = exquopos(a,g); } // a durch g (beide >0) dividieren
return a*b;
}
}
} // namespace cln
syntax highlighted by Code2HTML, v. 0.9.1