Pagini recente » Cod sursa (job #2689663) | Cod sursa (job #1131973) | Cod sursa (job #621565) | Cod sursa (job #2656441) | Cod sursa (job #1075275)
#include <iostream>
#include <fstream>
#include <bitset>
#define DN 1000005
using namespace std;
int fi[DN],div[DN],n,s;
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,div[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%div[i]==0)
x/=div[i];
if(x == 1) /// de forma fi ( x ^ p )
{
int b = div[i] , incape = i/div[i];
fi[i] = ( b - 1 ) * incape;
}
else /// de forma fi ( a * b ) , unde gcd(a,b) = 1
fi[ i ] = fi[ x ] * fi[ i/x ];
}
s+=2*fi[i];
}
g<<++s;
return 0;
}