LightOj 1370(素數篩選打表)

lightoj 1356
題目大意:給出n 個數分別爲aiφ(bi)ai , bi , 求i=1nbi ;

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#define LL long long
#define N 1000004

using namespace std;

int prime[N];
int a[N];

void init()
{
    memset(prime, 0, sizeof(prime));

    for(int i = 2; i < N; i++) 
    {  
        if(!prime[i]) 
        {   
            for(int j = i + i; j < N; j += i)
            {  
                prime[j] = 1;  
            }  
        }  
    }  

    a[1] = 2;
    for (int i = 2; i < N - 2; i++)
    {
        int cot = 1;
        while (1)
        {
            if (prime[i + cot] == 0)
            {
                a[i] = i + cot;
                break;
            }
            cot++;
        }
    }
}

int main()
{
    init();

    int T;
    scanf("%d", &T);

    for (int cas = 1; cas <= T; cas++)
    {
        int n;
        scanf("%d", &n);

        LL ans = 0;

        while (n--)
        {
            int t;
            scanf("%d", &t);

            ans += a[t];
        }

        printf("Case %d: %lld Xukha\n", cas, ans);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章