题目链接:点击打开链接
题意:给你n个整数,第i个整数为Xi。定义phi(k)为k的欧拉函数值,设pi为满足phi(pi)>=Xi的最小整数,题目就是要求sum(p1,p2,p3,...,pn)。
分析:满足phi(pi)>=Xi的最小整数一定是大于pi的第一个素数(证明以后给出,暂时没想出来。。。)。累加各个数的结果就是答案,先打表,后查询。
代码:
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 1e6 + 5;
int prime[maxn];
void doprime(){///素数筛
memset(prime,0,sizeof(prime));
prime[1]=1;
for(int i=2;i*i<maxn;i++){
if(!prime[i]){
for(int j=2*i;j<maxn;j+=i){
prime[j]=1;
}
}
}
}
int solve(int n){
for(int i=n+1;;i++){
if(!prime[i])
return i;
}
}
int main(){
int t,n,num,cas=1;
doprime();
cin>>t;
while(t--){
long long ans = 0;
cin>>n;
for(int i=0;i<n;i++){
cin>>num;
ans += solve(num);
}
///Case 1:22
cout<<"Case "<<cas++<<": "<<ans<<" Xukha"<<endl;
}
}