一开始以为要用线性筛预处理欧拉函数表,但数论是个奇妙的东西,有些规律需要试试看,而其证明不那么重要?
给出欧拉函数值:求1-N
const int N = 1e6 + 10;
int t;
int book[N], primes[N], cnt;
void xianxing(int n)
{
f(i, 2, n)
{
if (!book[i])
primes[cnt++] = i;
for (int j = 0;primes[j] <= n / i;++j)
{
book[primes[j] * i] = 1;
if (i%primes[j] == 0)break;
}
}
}
int main()//给出欧拉函数值 求最小的大于该值的数的坐标 发现是大于该phi的质数
{
xianxing(N-1);
cin >> t;
int n, x;
//f(i, 0, 100)
//cout << primes[i] << endl;
int cot = 1;
while (t--)
{
scanf("%d", &n);
ll ans = 0;
f(i, 1, n)
{
scanf("%d", &x);
//debug(x);
int j = upper_bound(primes, primes+cnt, x) - primes;
//debug(j);
ans += primes[j];
}
printf("Case %d: %lld Xukha\n", cot++, ans);
}
return 0;
}