欧拉函数求和
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
题目描述很简单,求出
(PS:上面式子的意思是大于0小于n并且能整除n的所有d的欧拉函数值之和)。
-
输入
- 每行一个数n(n<2^31),输入以文件结尾结束。 输出
- 每个结果占一行。 样例输入
-
1 2 12
样例输出
-
0 1 8
来源
- rihkddd原创 上传者
ac代码
#include<stdio.h> int eular(int n) { int i,ans=n; for(i=2;i*i<=n;i++) { if(n%i==0) { ans-=ans/i; while(n%i==0) n/=i; } } if(n>1) ans-=ans/n; return ans; } int main() { int n; while(scanf("%d",&n)!=EOF) { int sum=0; int i; for(i=1;i<n;i++) { if(n%i==0) { sum+=eular(i); } } printf("%d\n",sum); } }