读书人

Calculation 二 欧拉函数的应用

发布时间: 2012-08-30 09:55:54 作者: rapoo

Calculation 2 欧拉函数的应用

/*题意是求和n不互质的数的总和。可用总和1-(n-1)减去互质的数的总和。课用欧拉函数求1-n的互质的数的个数num。则若a和n互质,n-a必定也和n互质(a<n)。也就是说num必定为偶数。其中互质的数成对存在。其和为n。则总和为num*n/2   */#include <stdio.h>int phi(long long n){    int rea=n;    for(int i=2;i*i<=n;i++)    if(n%i==0)    {        rea=rea-rea/i;        do        n/=i;        while(n%i==0);    }    if(n>1)    rea=rea-rea/n;    return rea;}int main(){    long long n;    while(scanf("%lld",&n)==1&&n)    {        long long sum=n*(n+1)/2-n;        sum-=phi(n)*n/2;        sum%=1000000007;        printf("%lld\n",sum);    }    return 0;}


读书人网 >编程

热点推荐