// 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