C版:
#include<bits/stdc.h>
#define ll long long
#define N 100005
using namespace std;
int T,n,x,y;
ll ans=1;
ll phi[N],prim[N],prinum;
bool isprim[N];
void Ls()
{
phi[1]=1;
for(register int i=2;i<=100005;++i)
{
if(!isprim[i]) prim[++prinum]=i,phi[i]=phi[i-1];
for(register int j=1;j<=prinum&&prim[j]*i<=100005;++j)
{
isprim[prim[j]*i]=true;
phi[prim[j]*i]=phi[prim[j]]+phi[i];
if(!(i%prim[j])) break;
}
}
return;
}
template<class T>inline void read(T &res)
{
char c;T flag=1;
while((c=getchar())<'0'||c>'9')if(c=='-')flag=-1;res=c-'0';
while((c=getchar())>='0'&&c<='9')res=res10+c-'0';res=flag;
}
int main()
{
Ls();
read(T);
while(T--)
{
read(n);
for(register int i=1;i<=n;++i)
{
read(x);read(y);
if(x==2) ans--;
ans+=phi[x]*y;
}
printf("%lld\n",ans);
ans=1;
}
return 0;
}