求助,有 UVA 账号,结果 UKE?是我的代码错了吗
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=4e6+10;
int n,dp[maxn],ans;
signed main()
{
while(scanf("%lld",&n) != EOF)
{
ans=0;
if(!n)break;
for(int i=n;i>=1;i--)
{
dp[i]=(n/i)*(n/i);
for(int j=2*i;j<=n;j+=i)dp[i]-=dp[j];
ans+=i*dp[i];
}
printf("%lld\n",(ans-n*(n+1)/2)>>1);
}
return 0;
}