Cartesian LCM of two arrays
J, 14 13 bytes

,./@($&amp;&gt;~*./)


Try it online!

-1 byte thanks to Bubbler

This answer takes the two lists as its left arg, and the two list lengths as its right arg.


($&amp;&gt;~*./) is a dyadic hook which applies gcd between the two right arg lengths *./ and the reshapes the two left arg lists $ to that length after opening them &amp;&gt;.  At this point they'll be the same length so boxing is no longer needed.
[:,./ so now we can just zip them ,.




original answer taking the lists directly

J, 17 16 bytes

(*.&amp;#$[),.*.&amp;#$]


Try it online!


*.&amp;# is the gcd *. after taking length # of both args


It turns out to be shorter to repeat this phrase than to remain DRY.


,. is zip and and $ is shape.  So we shape the left arg [ by the gcd of the list lengths, do the same to the right arg ], and zip them.