int i=1; while(prime[i]*prime[i]<=r) { int p=prime[i]; for(int x=(p-l%p)%p;x<=r-l;x=x+p) { a[x]=(a[x]/p)*(p-1); while(b[x]%p==0) b[x]/=p; } i++; }
中for(int x=(p-l%p)%p;x<=r-l;x=x+p)为什么不能是x=p-l%p