Pagini recente » Cod sursa (job #1895674) | Cod sursa (job #1113606) | Cod sursa (job #2778493) | Cod sursa (job #784180) | Cod sursa (job #494183)
Cod sursa(job #494183)
#include <fstream>
#define NMAX 1010
using namespace std;
bool A[NMAX+2];
int P[NMAX];
int k;
int N;
int T[NMAX*NMAX+2];
void ciur()
{
for(int i=4;i<=NMAX;i+=2)
{
A[i]=true;
}
P[++k]=2;
for(int i=3;i<=NMAX;i+=2)
{
if(!A[i])
{
P[++k]=i;
for(int j=i*i;j<=NMAX;j+=2*i)
A[j]=true;
}
}
}
void citire()
{
fstream fin("fractii.in",ios::in);
fin>>N;
fin.close();
}
void totient()
{
int z;
int p;
for(int i=2;i<=N;i++)
{
z=i;
T[i]=1;
for(int j=1;P[j]*P[j]<=N ;j++)
{
p=0;
while(z%P[j]==0)
{
z=z/P[j];
p++;
}
if(p>=1)
{
T[i]=T[i]*(P[j]-1)*int(pow(double(P[j]),double(p-1)));
}
}
if (z!=1)
{
T[i]*=z-1;
}
}
}
void afisare()
{
fstream fout("fractii.out",ios::out);
long long S=0;
for(int i=2;i<=N;i++)
S+=T[i];
S*=2;
S+=1;
fout<<S<<"\n";
fout.close();
}
int main(int argc,char*argv[])
{
citire();
ciur();
totient();
afisare();
}