自守数实现!解决方法

自守数实现!我系统32位Win7,C语言实现打印1--200000之间的自守数,gcc编译,每次都溢出,换成double型又不正

自守数实现!
我系统32位Win7,C语言实现打印1--200000之间的自守数,gcc编译,每次都溢出,换成double型又不正常,或者只能打到10000以里,超出的就打不出来了。求高手指点迷津。
参考程序如下:
#include<stdio.h>
#include<iso646.h>

int main(void)
{
  long i,n,j,temp;

  printf("Give number for n:\n");
  scanf("%ld",&n);
  printf("\n1--%ld:\n",n);
  for(i=1;i<n;i++)
  {
  j=10;  
  temp=i*i;
  while(i%j!=i)
j*=10;
  if(temp%j==i)
printf("%ld ",i);  
  }  
  putchar(10);

  return 0;
}




[解决办法]
GCC没配置好?