欧拉函数线性筛

void eulershai(int n){
	NotPrime[1]=1;
	phi[1]=1;
	for(int i=2;i<=n;i++){
		if(NotPrime[i]){
			Prime[tot++]=i;
			phi[i]=i-1;
		}
		for(int j=0,k;(k=i*Prime[j])<=n;j++){
			NotPrime[k]=1;
			if(i%Prime[j]==0){
				phi[k]=phi[i]*Prime[j];
				break;
			}
			phi[k]=phi[i]*(Prime[j]-1);
		}
	}
}
void shaifa(int n){
	NotPrime[1]=1;
	for(int i=2;i<=n;i++){
		if(!NotPrime[i]){
			Prime[tot++]=i;
		}
		for(int j=0,k;(k=i*Prime[j])<=n;j++){
			NotPrime[k]=1;
			if(i%Prime[j]==0)break;
		}
	}
}
上一篇:欧拉函数


下一篇:Perceptual Losses for Real-Time Style Transfer and Super-Resolution【阅读笔记】