我只想说数据弱爆了,这也可以过
欧拉函数求和
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
题目描述很简单,求出
(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;
}