#include<stdio.h> #include<string.h> #include<stdlib.h> #include <map> #include <vector> #include <queue> #include <deque> #include <set> #include <stack> #include <algorithm> #include <array> #include <unordered_set> #include <unordered_map> #include <string> using namespace std; bool rcmp(int a, int b) { return a>b; } typedef long long LL; LL ss[10000004]; char pmk[10000004]; LL fy[10000004]; #define MAXN 10000000 int ts[200004]; int main() { int n, i, j, p, c, cc, mx; LL r, x; int tc; scanf("%d", &tc); for (i=0; i<tc; i++) scanf("%d", &ts[i]); mx=0; for (i=0; i<tc; i++) mx=max(mx, ts[i]); memset(pmk, 0, mx+1); for (i=0; i<=mx; i++) fy[i]=1; for (i=2; i<=mx; i++) if (pmk[i]==0) { p=i; c=0; for (j=i; j<=mx; j+=i) { pmk[j]=1; c++; x=p-1; cc=c; while((cc%p)==0) { cc/=p; x*=p; } fy[j]*=x; } } ss[0]=0; ss[1]=0; for (i=2; i<=MAXN; i++) ss[i]=ss[i-1]+fy[i]; for (i=0; i<tc; i++) { n=ts[i]; // while(tc) { tc--; // scanf("%d", &n); // 0--n-1 r = n; r*=n-1; r/=2; r+=(r-ss[n]); printf("%lld\n", r); } return 0; }