NYOJ - 欧拉函数求和

来源:互联网 发布:数据挖掘实战微盘 编辑:程序博客网 时间:2024/05/02 02:47

欧拉函数求和

时间限制:1000 ms  |           内存限制:65535 KB
难度:3
描述

题目描述很简单,求出

(PS:上面式子的意思是大于0小于n并且能整除n的所有d的欧拉函数值之和)。

输入
每行一个数n(n<2^31),输入以文件结尾结束。
输出
每个结果占一行。
样例输入
1212
样例输出
018
#include <stdio.h>#include <math.h>int Eular(int n){int i,j,k = n;for(i = 2; i <= n/2; 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(void){int n,i;while(~scanf("%d",&n)){int s = 0;for(i = 1; i <= n/2; i++){if(n % i == 0)s += Eular(i);}printf("%d\n",s);}return 0;}