题目链接:https://acm.hdu.edu.cn/showproblem.php?pid=6954
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll M = 1e7+2;
ll v[M],prime[M],ans,n,m;
void primes(int n){//线性筛法找质数,o(n);
memset(v,0,sizeof v);m = 0;//m是质数的数量
for(int i = 2;i<=n;i++){
if(v[i]==0){
v[i] = i;prime[++m] = i;
}
for(int j = 1;j<=m;j++){
if(prime[j]>v[i]||prime[j]>n/i) break;
v[i*prime[j]] = prime[j];
}
}
}
int main (){
int t;scanf("%d",&t);primes(1e7);
while(t--){
ans = 0;
scanf("%d",&n);
for(int i = 1;i<=m;i++){
if(prime[i]>n) break;
else ans+=prime[i];
}
ans = ans+(n+3)*(n-2)/2-2;
printf("%lld\n",ans);
}
return 0;
}