Code:
a │ b │ List of products
──┼───┼──────────────────────────────────────────────────────────────────────────
1 │ 1 │ 1·1
┊ ┊
2 │ 1 │ 2·1, 1·1
2 │ 2 │ 2·2, 2·1, 1·1
┊ ┊
3 │ 1 │ 3·1, 2·1, 1·1
3 │ 2 │ 3·2, 2·2, 3·1, 2·1, 1·1
3 │ 3 │ 3·3, 3·2, 2·2/4·1, 3·1, 2·1, 1·1
┊ ┊
4 │ 1 │ 4·1, 3·1, 2·1, 1·1
4 │ 2 │ 4·2, 3·2, 2·2/4·1, 3·1, 2·1, 1·1
4 │ 3 │ 4·3, 3·3, 4·2, 3·2, 2·2/4·1, 3·1, 2·1, 1·1
4 │ 4 │ 4·4, 4·3, 3·3, 4·2, 3·2, 2·2/4·1, 3·1, 2·1, 1·1
┊ ┊
5 │ 1 │ 5·1, 4·1, 3·1, 2·1, 1·1
5 │ 2 │ 5·2, 4·2, 3·2, 5·1, 2·2/4·1, 3·1, 2·1, 1·1
5 │ 3 │ 5·3, 4·3, 5·2, 3·3, 4·2, 3·2, 5·1, 2·2/4·1, 3·1, 2·1, 1·1
5 │ 4 │ 5·4, 4·4, 5·3, 4·3, 5·2, 3·3, 4·2, 3·2, 5·1, 2·2/4·1, 3·1, 2·1, 1·1
5 │ 5 │ 5·5, 5·4, 4·4, 5·3, 4·3, 5·2, 3·3, 4·2, 3·2, 5·1, 2·2/4·1, 3·1, 2·1, 1·1
┊ ┊
A brute force approach would be similar to selection sort, albeit without saving any of the values. A naïve implementation of that would be a quadruple loop.