Ho scritto questo codice che effettivamente risolve il problema nel caso k = 3 e n = 48
#include <stdio.h>
int printV(int v[], int inf, int sup){
for (int i=inf; i<sup; i++)
printf("%d ",v);
printf("\n");
}
int main()
{
int n = 48;
int a[3];
a[0] = 2;
while (a[0]*a[0] <= n)
{
if (n % a[0] == 0)
{
a[1] = a[0];
while (a[1]*a[1] <= n/a[0])
{
if (n/a[0] % a[1] == 0)
{
a[2] = (n/a[0])/a[1];
printV(a, 0, 3);
}
a[1]++;
}
}
a[0]++;
}
}
Nel caso in cui volessi cambiare k dovrei riscrivere il programma aggiungendo un altro ciclo while annidato e così via. Mi domando se esiste un modo ricorsivo di chiamare cicli while annidati. Grazie davvero a chiunque saprà aiutarmi.