Cod sursa(job #2099589)

Utilizator bori2000Fazakas Borbala bori2000 Data 4 ianuarie 2018 15:23:22
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <list>

using namespace std;

int a[1000001];

int main()
{
    ifstream f("fractii.in");
    ofstream g("fractii.out");
    list<float> prim;
    for(int i=1; i<=1000000; i++) a[i]=1;
    for(int i=2; i<=1000000; i++)
    {
        if(a[i])
        {
            prim.push_back(i);
            for(int j=2*i; j<=1000000; j+=i) a[j]=0;
        }
    }
    /*cout<<"primek"<<endl;
    for(list<float>::iterator it=prim.begin(); it!=prim.end(); it++) cout<<*it<<" ";
    cout<<endl;*/
    int n;
    f>>n;
    int s=0;
    float phi;
    for(int i=2; i<=n; i++)
    {
        phi=i;
        for(list<float>::iterator it=prim.begin(); it!=prim.end() and *it<=i; it++)
        {
            if((int)i%(int)*it==0) phi*=(*it-1)/(*it);
            //else cout<<i<<" nem oszthato "<<*it<<"-vel"<<endl;
        }
        s+=phi;
        //cout<<i<<" "<<phi<<endl;
    }
    g<<2*s+1<<endl;

    return 0;
}