欧拉练习-2022/4/16
一开始是想二分做的,但实际上打一下表会发现欧拉函数不是单增性质
同时我们也可以发现当一个数是素数时,后面的非素数欧拉函数都不超过这个素数的欧拉函数,所以只需要线性塞找一下素数就好
#include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> #include<map> #include<cmath> typedef long long ll; #define INF 0x3f3f3f3f #define MAXN 1000005 #define mod 1000000007 using namespace std; ll ss[MAXN]; void inln()//线性塞 { ss[1]=true; for(int i=2;i<MAXN;i++) { if(!ss[i]) { for(int p=i*2;p<MAXN;p+=i) ss[p]=true; } } } int main() { inln(); ll sum;cin>>sum; for(ll i=1;i<=sum;i++) { ll len,all=0;cin>>len; while(len--) { ll temp;cin>>temp; for(ll j=temp+1;j<MAXN;j++) { if(!ss[j]) { all+=j; break; } } } cout<<"Case"<<' '<<i<<':'<<' '<<all<<' '<<"Xukha"<<endl; } return 0; }