Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
题意求与N不互质的数的和;
欧拉函数性质;与N互质的数的和为N*eular(N)/2;1~N的总和为N*(N-1)/2
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define MOD 1000000007
using namespace std;
long long Eular(long long n){
long long ret=1,i;
for(i=2;i*i<=n;++i){
if(n%i==0){
n/=i;ret*=i-1;
while(n%i==0){
n/=i;ret*=i;
}
}
}
if(n>1)ret*=n-1;
return ret;
}
int main()
{
long long n;
while(scanf("%lld",&n),n){
long long ans=n*(n-1)/2;
printf("%lld\n",(ans-n*Eular(n)/2)%MOD);
}
return 0;
}