标签:
我只想说数据弱爆了,这也可以过
题目描述很简单,求出

(PS:上面式子的意思是大于0小于n并且能整除n的所有d的欧拉函数值之和)。
#include<stdio.h>
int euler(int n)
{
int ret=n,i;
for(i=2;i*i<=n;i++)
if(n%i==0)
{
ret=ret-ret/i;
while(n%i==0)
n/=i;
}
if(n>1) ret=ret-ret/n;
return ret;
}
int main()
{
int n,i;
while(~scanf("%d",&n))
{
int sum=0;
for(i=1;i*i<=n;i++)
{
if(n%i==0)
{
if(i!=n)
sum += euler(i);
if(i*i != n && i != 1)
sum += euler(n/i);
}
}
printf("%d\n",sum);
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/qq_16767427/article/details/44835017