【题目分析】
卷积太有趣了。

最终得出结论,互质数和为n*phi(n)/2即可。
用总和减去互质数之和即可,即(n*(n+1)/2-n-n*phi(n)/2)%md。
【代码】
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <map>
#include <set>
#include <queue>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 500005
#define md 1000000007
#define ll long long
#define inf 0x3f3f3f3f
#define F(i,j,k) for (int i=j;i<=k;++i)
#define D(i,j,k) for (int i=j;i>=k;--i)
void Finout()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
#endif
}
int Getint()
{
int x=0,f=1; char ch=getchar();
while (ch<'0'||ch>'9') {if (ch=='-') f=-1; ch=getchar();}
while (ch>='0'&&ch<='9') x=x*10+ch-'0';
return x*f;
}
ll n;
ll phi(ll x)
{
ll t=x,upp=sqrt(x);
F(i,2,upp)
{
if (x%i==0) {t/=i;t*=i-1;}
while (x%i==0) x/=i;
}
if (x>1) t/=x,t*=x-1;
return t;
}
int main()
{
Finout();
while (scanf("%lld",&n)&&n)
cout<<(n*(n+1)/2-n-n*phi(n)/2)%md<<endl;
}