造成超时可能是因为你每次都是读取一个数然后输出一个结果。这可能和测试系统的输入输出连接矛盾。
试试找个数组将所有输入全部读进来,存放在里面,然后再一个一个计算输出。就是先统一输入,然后统一输出。
#include "stdio.h"
#include
int main()
{
__int64 n,i = 0;
scanf("%I64dd",&n);
while(n)
{
__int64 j,a = 1;
__int64 t=n,m = (__int64)sqrt((double)n);
for(j = 2;j <= m;j++)
if(t % j == 0)
{
t= t / j;
a= a * (j - 1);
}
if(a == 1)
a = t - 1;
else
a =a * t;
printf("%I64d\n",a);
scanf("%I64d",&n);
}
return 0;
}
试试这个