Cod sursa(job #1001253)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 24 septembrie 2013 19:43:03
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <fstream>
#include <vector>



int main(){
    std::ifstream fin("fractii.in");
    std::ofstream fout("fractii.out");

    unsigned n;
    fin>>n;

    std::vector<unsigned> phi(n+1);     //used like Erastothenes's Sieve but contains the totient
    for(unsigned i=1;i<=n;++i) phi[i]=i;

    unsigned long long sum=0;

    for(unsigned i=2;i<=n;++i){
        if(phi[i]==i){
            for(unsigned j=i;j<=n;j+=i){
                phi[j]=phi[j]/i*(i-1);
            }
        }

        sum+=phi[i];  //add phi[i] to the sum of totients
    }

    fout<<2*sum+1<<'\n';
}