Pagini recente » Cod sursa (job #2745998) | Cod sursa (job #2781016) | Cod sursa (job #1126262) | Cod sursa (job #1816007) | Cod sursa (job #661216)
Cod sursa(job #661216)
#include<fstream>
#define MAX 1000020
using namespace std;
ifstream in("fractii.in");
ofstream out("fractii.out");
int prime[80000],k;
char ciur[MAX];
//int v[MAX];
void init()
{
int i, j;
k=0;
for(i=2;i<MAX;i++)
if(ciur[i]==0)
{
prime[k]=i; k++;
for(j=i+i;j<MAX;j+=i)
ciur[j] = 1;
}
}
int phi(int x)
{
int i=0, r=x, e;
while(x>1)
{
e=0;
while(x%prime[i]==0) {x/=prime[i]; e++;}
if(e>0) r = r/prime[i]*(prime[i]-1);
if(x==1) return r;
if(ciur[x]==0) {r = r/x*(x-1); return r;}
i++;
}
return r;
}
int main()
{
init();
int n, i;
long long s=0;
in >> n;
for(i=2;i<=n;i++)
s+=phi(i);
s = s*2 + 1;
out << s;
return 0;
}