Pagini recente » Cod sursa (job #1622680) | Cod sursa (job #910504) | Cod sursa (job #16113) | Cod sursa (job #2483765) | Cod sursa (job #1075280)
#include <iostream>
#include <fstream>
#include <bitset>
#define DN 1000005
using namespace std;
int dv[DN],n;
long long s, fi[DN];
bitset<DN> prim;
void ciur()
{
for(int i=2;i<=n;++i){
if(!prim[i]){
for(int j=i+i;j<=n;j+=i)
prim[j]=1,dv[j]=i;
}
}
}
int main()
{
ifstream f("fractii.in");
ofstream g("fractii.out");
f>>n;
ciur();
fi[1]=1;
for(int i=2;i<=n;++i){
int x = i;
if(prim[ x ]==0) /// daca e prim
fi[x]=x-1;
else{
int rez = 0 , pw = 1 ;
while(x%dv[i]==0)
x/=dv[i];
if(x == 1) /// de forma fi ( x ^ p )
{
int b = dv[i] , incape = i/dv[i];
fi[i] = ( b - 1 ) *1ll* incape;
}
else /// de forma fi ( a * b ) , unde gcd(a,b) = 1
fi[ i ] = fi[ x ] *1ll* fi[ i/x ];
}
s+=2*fi[i];
}
g<<++s;
return 0;
}