源代码:
void get()
{
for(int i=2;i<1001000;i++){
num[i]=1;
euler[i]=i;
}
for(int i=2;i<1001000;i++)
{
if(num[i])
for(int j=i;j<1001000;j+=i)
{
num[j]=0;
euler[j]=euler[j]/i*(i-1);
}
}
}
刚开始的时候,第一个循环的判断条件是i*i<1001000,后来发现这样的话,不能将j的所有质因子都找到,他这样只枚举了sqrt(1001000)的素数。
搞得我调了一段时间。