function var int: lcm(int: a2,int:b2) = let { int:a1 = max(a2,b2); int:b1 = min(a2,b2); array[0..a1,0..b1] of var int: gcd; constraint forall(a in 0..a1)( forall(b in 0..b1)( gcd[a,b] == if (b == 0) then a else gcd[b, a mod b] endif ) ) } in (a1*b1) div gcd[a1,b1]; var int: lcm1 = lcm(18,12); solve satisfy; output [show(lcm1),"\n"];