Stworzyłem coś takiego (kod w Javie):
int l = 0 , m = 0, h = 0;
public void Wyswietl_iloczyny(int k)
{
System.out.println("1 * " + k);
for (int i=2; i < Math.sqrt(k); ++i)
{
if (k%i == 0)
{
System.out.println(i + " * " + k/i + " ");
l = k/i;
for (int a=3; a < Math.sqrt(l); ++a)
{
if (l%a == 0)
{
if (i < a)
{
System.out.println(i + " * " + a + " * " + l/a);
m = l/a;
for (int b=4; b < Math.sqrt(m); ++b)
{
if (m%b == 0)
{
if (a < b)
{
System.out.println(i + " * " + a + " * " + b + " * " + m/b);
h = m/b;
for (int c=5; c < Math.sqrt(h); ++c)
{
if (h%c == 0)
{
if (b < c)
{
System.out.println(i + " * " + a + " * " + b + " * " + c + " * " + h/c);
}
}
}
}
}
}
}
}
}
}
}
}
Tyle zagnieżdżeń gdyż najmniejszy rozkład 6 liczbowy to: 2 * 3 * 4 * 5 * 6 * 7 = 5040, a problem dotyczył liczby z przedziału (0 < k < 1000), wystarczy 5. Jednakże wygląda to bardzo nie elegancko. Jest jakiś sposób, aby to zoptymalizować?