欧拉练习-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;
}

 

posted on 2022-04-22 18:34  zesure  阅读(37)  评论(0编辑  收藏  举报

导航