مساله رو کامل نگرفتم.
شاید این درست باشه
int input = *****;
int i;
int[] list = /*a big list, i think it is sizeof(int) * root(3, input) */
int list_pointer=0;
for(int n = 1;n != root(3, input);n++)
{
i = 3;
int copy = input;
int Sqr_n = sqrt(n);
for(int m = 1;m != Sqr_n;m++)
{
for(int p = 1;p != Sqr_n;p++)
{
if(i == 1)
{
if(copy != 0)
{
list[list_pointer++] = copy;
list[list_pointer++] = 1;
}
else
{
list_pointer -= i << 1;
}
}
else
{
int A = m * p;
if(A < copy)
{
copy -= A;
list[list_pointer++] = m;
list[list_pointer++] = p;
if(--i == 0) break;
}
}
}
}
}
اگر اون حالتی باشه که فکر نمیکنم باشه, تقریباً ۲۰۰ خط میشه.دعا کن نباشه.