f(i) = x,那么对于1 ~ x-1都是可以整除i的
也就是i可以整除
lcm(1,2,3...,x-1)
可以整除到x-1的数目为
n/lcm(1,2,3...,x-1)
可以整除到x的数目为
n/lcm(1,2,3...,x)
根据容斥原理
不可以整除到x的数目为:(既可以整除到x-1,又不能整除的x的数目)
n/lcm(1,2,3...,x-1) - n/lcm(1,2,3...,x)
枚举的是满足条件的f(i)=x的数目
然后ans+=x*i;
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define YES cout<<"YES"<<endl
#define NO cout<<"NO"<<endl
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1e9+7;
const int INF=0x3f3f3f3f;
const int N = 1e5+10;
#define ios ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
void solve()
{
int n;
cin>>n;
int ans=0;
int p=1;
for(int i=2;;i++)
{
int pp=(p*i)/__gcd(i,p);
ans=(ans+i*(n/p-n/pp+mod)%mod)%mod;
p=pp;
if(p>n)
break;
}
cout<<ans<<endl;
}
signed main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
}