1~n 中所有phi[i] 欧拉函数值 模板
void phi_table(int n,long long * phi) { for(int i=0;i<=n;i++) phi[i]=0; phi[1]=1; for(int i=2;i<=n;i++) if(!phi[i]) { for(int j=i;j<=n;j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } }
题目链接
#include<bits/stdc++.h> using namespace std; long long phi[50004]; void phi_table(int n,long long * phi) { for(int i=0;i<=n;i++) phi[i]=0; phi[1]=1; for(int i=2;i<=n;i++) if(!phi[i]) { for(int j=i;j<=n;j+=i) { if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } } int main() { phi_table(50001,phi); int x; for(int i=3;i<=50001;i++) { phi[i]+=phi[i-1]; } phi[1]=0;//!!! while(cin>>x) { if(!x) return 0; printf("%lld\n",2*phi[x]+1); } }
Send a Table 欧拉函数筛法
猜你喜欢
转载自blog.csdn.net/qq_43868883/article/details/104717777
今日推荐
周排行