zoukankan      html  css  js  c++  java
  • 欧拉函数与数论的结合UVA11426

    链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2421

    解答:详见《入门经典 训练指南》  125页

     #include<iostream>
     #include<cstdio>
     #include<cstring>
     #include<cmath>
     using namespace std;
     const int maxn=4000000;
     long long phi[maxn];
     long long s[maxn+10],f[maxn+10];
     void phi_table(long long n)
     {
         for(int i=2;i<=n;i++)
            phi[i]=0;
         phi[1]=1;
         for(int i=2;i<=n;i++)
            if(!phi[i])
            for(int j=i;j<=n;j+=i)
         {
             if(!phi[j])
                phi[j]=j;
             phi[j]=phi[j]/i*(i-1);
         }
     }
     int main()
     {
         phi_table(maxn);
         memset(f,0,sizeof(f));
         for(int i=1;i<=maxn;i++)
            for(int j=i*2;j<=maxn;j+=i)   //最大公约数不能为本身
            f[j]+=i*phi[j/i];
         s[2]=f[2];
         for(int i=3;i<=maxn;i++)
            s[i]=s[i-1]+f[i];
         int n;
         while(cin>>n)
         {
             if(n==0)   break;
             cout<<s[n]<<endl;
         }
         return 0;
     }
    


  • 相关阅读:
    团队开发5
    团队开发4
    团队开发3
    团队开发2
    团队开发1
    团队计划会议
    寒假学习进度---完结篇
    寒假学习进度十七
    寒假学习进度十六
    python后续学习
  • 原文地址:https://www.cnblogs.com/wolf940509/p/6617106.html
Copyright © 2011-2022 走看看