I am trying to find numbers between 1 and 100000000 which are both perfect squares and perfect cubes.

I have written the code successfully and the results are good. The problem is coming with printf.
When I print the results seperately, they're right.. when I print them in the same line, it is showing 0....

please check the code below:

#include <stdio.h>


void sqroot(long long int number, long long int *prevsqroot, long long int *sqexists)
{
long long int i;
*sqexists = 0;

for(i= *prevsqroot; i<=number; i++)
{
long long int var = i*i;

if (var == number)
{
*prevsqroot = i;
*sqexists = 1;
break;
}

if (var > number)
{
break;
}

}
}

void curoot(long long int number, long long int prevsqroot, long long int *prevcuroot, long long int *cuexists)
{
long long int i;
*cuexists = 0;


for(i=*prevcuroot; i<=prevsqroot; i++)
{
long long int var = i*i*i;

if (var == number)
{
*prevcuroot = i;
*cuexists = 1;
break;
}

if (var > number)
{
break;
}

}
}


main()
{
long long int i;
long long int prevsqroot = 1;
long long int prevcuroot = 1;
long long int sqexists=0, cuexists=0;

for (i=1; i<=1000000000; i++)
{
sqroot(i, &prevsqroot, &sqexists);

if (sqexists ==1)
{
curoot(i, prevsqroot, &prevcuroot, &cuexists);

if (cuexists ==1)
{
printf("Squareroot is %6d\n", prevsqroot);
printf("Cuberoot is %6d\n", prevcuroot);

printf("Number is %9d Sqroot is %6d Curoot is %6d\n", i, prevsqroot, prevcuroot);
}
}

}


printf("Successful!\n");

getchar();
}



notice that there are three printfs under the if above... the first
two printfs are working fine... but when i do the same thing in the thrid printf, it is not working..



another problem is that when i run this code in TC++, I get one extra problem, it is showing i as a negative number ... however, the squareroots and cuberoots calculated are right ...


Can anyone tell me what's gone wrong with this ?