给出n个数字的序列a[],对于每个数字ai找到一个欧拉函数值大于等于ai的数bi,求找到的所有数bi的最小值之和sum
Input
有T(T<=100)组数据,每组数据有两行,第一行给定n(n<=10000) 第二行给出长度为n的序列a[],ai的取值范围为[1,1000000]
Output
输出一个数sum
Sample Input
3
5
1 2 3 4 5
6
10 11 12 13 14 15
2
1 1
Sample Output
Case 1: 22 Xukha
Case 2: 88 Xukha
Case 3: 4 Xukha
打表记素数, 对着表来找
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<map>
#include<stack>
#include<set>
#include<queue>
#include<vector>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const ll maxn=1e6+100;
ll prime[maxn];
void init()
{
prime[1]=1;
for(ll i=2;i<=1000010;i++)
{
if(prime[i]==0)
{
for(ll j=i+i;j<=1000010;j+=i)
prime[j]=1;
}
}
}
int main()
{
ll a,b,x,sum,k=0;
cin >> a;
memset(prime,0,sizeof(prime));
init();
while(a--)
{
k++;
sum=0;
cin >> b;
for(ll i=1;i<=b;i++)
{
cin>>x;
for(ll j=x+1;j<=1000010;j++)
{
if(prime[j]==0)
{
sum+=j;
break;
}
}
}
cout << "Case " << k << ": ";
cout << sum << " Xukha" << endl;
}
system("pause");
return 0;
}