Pagini recente » Cod sursa (job #1158433) | Cod sursa (job #1984620) | Cod sursa (job #2267225) | Cod sursa (job #1898639) | Cod sursa (job #2127427)
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
int * ciur(int n)
{
int nr=0;
queue <int> q;
int vect[n];
for(int i=0;i<=n;++i)
vect[i]=0;
vect[0]=vect[1]=1;
for(int i=2;i<=n;++i)
if(vect[i]==0)
{
q.push(i);
++nr;
for(int j=i+i;j<=n;j=j+i)
vect[j]=1;
}
int* vec=new int[nr+1];
vec[0]=nr;
for(int i=1;i<=nr;++i)
{
vec[i]=q.front();
q.pop();
}
return vec;
}
int indicator(int x,int *ciur)
{
long long int nr=x;
long long int nr_1=1;
for(int i=1;i<=ciur[0]&&ciur[i]<=x;++i)
if(x%ciur[i]==0)
{
nr=nr/ciur[i];
nr_1=nr_1*(ciur[i]-1);
}
nr=nr*nr_1;
return nr;
}
int main()
{
int n;
f>>n;
int *v_ciur=ciur(n);
int m=v_ciur[0];
long long int nr=0;
for(int i=2;i<=n;++i)
nr+=2*(indicator(i,v_ciur));
nr++;
g<<nr;
return 0;
}