设值大于等于n的欧拉函数E(m),m最小为第一个大于n的质数,暂时未证明
设计前要算下数据范围和时间成本
数据范围n=10^4,输入数据(幸运值)num=10^6,n*num=10^10;
#include <bits/stdc++.h>
using namespace std;
int t,n,num;
const int N=1000010;
bool st[N];
int prime[N],cnt=0;
void makeTable(){//线性筛法模板,st记录没有筛去的(质数)
for(int i=2;i<=N-1;i++){
if(!st[i]) prime[cnt++]=i;
for(int j=0;prime[j]<=(N-1)/i;j++){
st[prime[j]*i]=true;
if(i%prime[j]==0) break;
}
}
}
int main(int argc, char** argv) {
cin>>t;
makeTable();
for(int i=1;i<=t;i++){
long long sum=0;
cin>>n;
for(int j=0;j<n;j++){
scanf("%d",&num);
for(int k=num+1;;k++){
if(!st[k]) {
sum+=k;break;
}
}
}
printf("Case %d: %lld Xukha\n",i,sum);
}
return 0;
} 
京公网安备 11010502036488号