# Output Distinct Factor Cuboids

## JavaScript (V8),  61  60 bytes

Prints the cuboids to STDOUT.

n=>{for(z=n;y=z;z--)for(;(x=n/y/z)<=y;y--)x%1||print(x,y,z)}


Try it online!

### Commented

n => {                // n = input
for(                // outer loop:
y = z;            //   set y to z; stop if we've reached 0
z--               //   decrement z after each iteration
)                   //
for(              //   inner loop:
;               //     no initialization code
(x = n / y / z) //     set x to n / y / z
<= y;           //     stop if x > y
y--             //     decrement y after each iteration
)                 //
x % 1 ||        //     unless x is not an integer,
print(x, y, z)  //     print the cuboid (x, y, z)
}                     //


f n=[[a,b,c]|a<-[1..n],b<-[1..a],c<-[1..b],a*b*c==n]


Try it online!

Tuples are in descending order. "3" seems to be a small-enough number that writing out the 3 loops was shorter than anything general I could come up with.

## Python 3.8 (pre-release),  83  80 bytes

lambda n:[[i,j,k]for i in(r:=range(n+1))for j in r[i:]for k in r[j:]if i*j*k==n]


Try it online!

...beating a two-loop version by three bytes:

lambda n:[[i,j,n//i//j]for i in(r:=range(1,n+1))for j in r if(i<=j<=n/i/j)>n%(i*j)]