%lld
- это стандартный способ C99, но он не работает на компиляторе, который я использую (mingw32-gcc v4.6.0). Способ сделать это на этом компиляторе: %I64d
Так попробуйте это:
if(e%n==0)printf("%15I64d -> %1.16I64d\n",e, 4*pi);
и
scanf("%I64d", &n);
Единственный известный мне способ сделать это полностью переносимым способом - это использовать определения в <inttypes.h>
.
В вашем случае это выглядело бы так:
scanf("%"SCNd64"", &n);
//...
if(e%n==0)printf("%15"PRId64" -> %1.16"PRId64"\n",e, 4*pi);
Это действительно очень некрасиво ... но, по крайней мере, оно портативно.