Vjudge https://vjudge.net/problem/LightOJ-1370#author=0
题目大意:
给定一组数据,欧拉函数数值刚好符合给定数据 或 刚好大于给定数据的数值的和。
AC代码:
#include <iostream>
using namespace std;
const int N = 1000005;
//int euler(int n) {
// int ans = n;
// for(int i = 2; i * i <= n;i++) {
// if(n % i == 0) {
// ans = ans / i * (i - 1);
// while(n % i == 0) n /= i;
// }
// }
// if(n > 1) ans = ans / n * (n - 1);
// return ans;
//}
//打表新方式
int b[N] = {1,1,0};
void prime() {
for(int i = 2;i < N; i++) {
if(!b[i]) {
for(int j = i + i; j <= N ;j += i) {
b[j] = 1;
}
}
}
}
int main() {
prime();
int t,n;
cin >> t;
for(int i = 1;i <= t; i++) {
cin >> n;
long long sum = 0;
for(int j = 1;j <= n;j++) {
int x;
cin >> x;
for(int k = x + 1;;k++) {
if(!b[k]){
sum += k;
break;
}
}
}
cout << "Case "<< i << ": " << sum << " Xukha\n";
}
return 0;
}