找到n/i结果相同的,跳过并累加
#include<iostream>
#include<stdio.h>
using namespace std;
typedef long long LL;
LL H(LL n)
{
if(n<=0) return 0;
LL ret=n;
LL tmp;
for(LL i=2;i<=n;i++)
{
ret+=(tmp=n/i);
ret+=tmp*(n/tmp-i);
i=n/tmp;
}
return ret;
}
int main()
{
int t;
LL n;
scanf("%d",&t);
while(t--)
{
cin>>n;
cout<<H(n)<<endl;
}
return 0;
}