poj2478法里序列

来源:互联网 发布:c语言1到100素数和 编辑:程序博客网 时间:2024/05/13 23:29

求phi[1]+phi[2]+...+phi[n]的和。

以下为代码

#include<stdio.h>
long long a[1000001];
long long b[1000001];
int main()
{
 int n,i,j;
 a[1]=1;
 for(i=2;i<1000001;i++)
  a[i]=i;
 for(i=2;i<1000001;i++)
 {
  if(a[i]==i)
  {
   for(j=i;j<1000001;j+=i)
   {
    a[j]=a[j]*(i-1)/i;
   }
  }
 }
 for(i=2;i<1000001;i++)
  b[i]=b[i-1]+a[i];
 while(scanf("%d",&n)==1&&n!=0)
 {
  printf("%lld\n",b[n]);
 }
}

//我最开始a数组没用long long,惨啊。

原创粉丝点击