我只想說數據弱爆了,這也可以過
歐拉函數求和
- 描述
-
題目描述很簡單,求出
(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;
}