LightOJ 1007 - Mathematically Hard
题意:求出区间[a,b]的PHI值的平方和
分析:充分理解欧拉函数的定义,结合素数筛选的巧妙应用
![](https://pic002.cnblogs.com/images/2012/338791/2012052620492348.gif)
![](https://pic002.cnblogs.com/images/2012/338791/2012052620463766.gif)
对于素数筛选,对于一个素数pi,在筛选其倍数k*pi时就可以计算k*pi这个数的欧拉函数了
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 void cal_PHI(){ 2 int i,j; 3 int m=(int)sqrt(maxn*1.0); 4 memset(mk,0,sizeof(mk)); 5 for(i=1;i<maxn;i++) num[i]=i; 6 for(i=2;i<maxn;i++){ 7 if(!mk[i]){ 8 for(j=i;j<maxn;j+=i){ 9 mk[j]=1; 10 num[j]=num[j]*(i-1)/i; 11 } 12 } 13 } 14 }
不过在求区间平方和的时候水了,MEL~ 下次要吸取教训。。。