Cod sursa(job #1693229)

Utilizator diodio11V. Sorin diodio11 Data 22 aprilie 2016 18:21:59
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#define MAX 1000000
using namespace std;
ifstream in  ("fractii.in");
ofstream out ("fractii.out");
int phi[MAX+2];
bool prime[MAX+2];

void ciur_prime (int n){
    int i, j;
    fill_n(prime,MAX-1,1);
    prime[0]=0;
    prime[1]=0;
    for (i=2; i*i <= n; i++){
        if (prime[i]){
            for (j=i; j*i <= n; j++){
                prime[i*j]=0;
            }
        }
    }
}
void totient (int n){
    int i, j;
    for (i=1; i <= n; i++) phi[i]=i;
    for (i=1; i <= n; i++){
        if (prime[i]){
            for (j=i; j <=n; j+=i){
                phi[j]-=phi[j]/i;
            }
        }
    }
}

int main (){
    int i, n;
    unsigned long long s=-1;
    in >> n;
    ciur_prime(n);
    totient(n);
    for (i=1; i <= n ; i++){
        s=s + phi[i]*2;
    }
    out << s;
return 0;
}