欧拉函数+公式(i&n-i)成对出现,sum=n*(n-1-eular(n))/2,ok
ACcode:
#include<stdio.h>
#include<math.h>
#include<iostream>
#define LL long long
using namespace std;
const int MOD=1000000007;
int n;
int eular(int n)
{
int i,k=n;
for (i=2;i<=sqrt((double)n);i++)
{
if (n%i==0)
{
k=k/i*(i-1);
while (n%i==0) n/=i;
}
}
if (n>1) k=k/n*(n-1);
return k;
}
int main()
{
while (scanf("%d",&n)&&n)
printf("%I64d\n",((LL)n*(n-1-eular(n))/2)%MOD);
return 0;
}
本文介绍了一种利用欧拉函数进行数学计算的方法,并提供了一个C++实现的示例程序,该程序能够有效地计算给定整数n的欧拉函数值,并通过一个公式求解特定的组合计数问题。
8464

被折叠的 条评论
为什么被折叠?



