Pagini recente » Cod sursa (job #2544527) | Cod sursa (job #2867338) | Cod sursa (job #1812187) | Cod sursa (job #1312538) | Cod sursa (job #590872)
Cod sursa(job #590872)
#include<fstream>
#define NrP 1000
using namespace std;
int primes[NrP],phi[1000000],p[1000000];
int nr = 1;
void GetPrimes(int n)
{
int i,j;
for(i=2;i<=n;i++)
if(p[i] == 0)
{
nr++;
primes[nr] = i;
for(j = 2*i;j<=n;j+=i)
p[j] = 1;
}
}
int main()
{
int i,j,n,s = 0,ct,x,val;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
fin>>n;
GetPrimes(n);
s = 1;
primes[1] = 1;
phi[1] = 1;
for(i=2;i<=n;i++)
{
if(p[i] == 0)
{
phi[i] = i-1;
s+=phi[i];
}
else
{
x = 1;
j = 2;
while(j<=nr && (i%primes[j]))
j++;
val = i;
while(val!=1 && val%primes[j] == 0)
{
val = val/primes[j];
x = x*primes[j];
}
phi[i] = (x - x/primes[j])*phi[i/x];
s+=phi[i];
}
}
fout<<2*s-1<<"\n";
return 0;
}