Pagini recente » Cod sursa (job #570559) | Cod sursa (job #2145411) | Cod sursa (job #2692245) | Cod sursa (job #1212303) | Cod sursa (job #850062)
Cod sursa(job #850062)
#include<fstream>
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;vector<bool> ciur;vector<long> primes;void make_ciur(long n){long i,j,q;ciur.resize(n+1,1);ciur[0]=ciur[1]=0;i=2;while (i<=(long)(sqrt((double)n))){if(ciur[i]){primes.push_back(i);j= i*i;while (j<=n){ciur[j]=0;j+=i;}}++i;}for(q=i;q<=n;q++)if(ciur[q])primes.push_back(q);}long totient(long x){if(x <= 1) return 1;if(ciur[x]) return x-1;long cx = x ,phi = x,d,ind;ind = 0;while (cx!=1){d = primes[ind];if(cx%d == 0){phi -= phi/d;while(cx%d == 0){cx /=d;}}ind++;}return phi;}int main(){long n;unsigned long long nr_fractii = 0LL;ifstream fin("fractii.in");fin>>n;fin.close();make_ciur(n);ofstream fout("fractii.out");for(long i = 1;i<=n;++i)nr_fractii += totient(i);fout<<nr_fractii*2-1;fout.close();return 0;}