Pagini recente » Cod sursa (job #2256829) | Cod sursa (job #178779) | Cod sursa (job #2728774) | Cod sursa (job #74758) | Cod sursa (job #29709)
Cod sursa(job #29709)
#include<fstream.h>
#define Nmax 2000010
#define input "fractii.in"
#define output "fractii.out"
int a[Nmax];
long b[30];
long t;
void tot(long p)
{
long i=2;
t=p;
while(i<=p&&p>1)
{
if((a[i]==0)&&(p%i==0))
{
t=t*(i-1)/i;
while(p%i==0)
p=p/i;
if(a[p]==0)
{
t=(t/p)*(p-1);
break;
}
}
i++;
}
}
int main()
{
memset(b,0,30);
long n,p,q,nr;
int i,ok,k;
ifstream fin(input);
ofstream fout(output);
fin>>n;
a[1]=1;
nr=1;
for(i=2;i<=n;i++)
a[i]=0;
for(p=2;p<=n;p++)
{
if(a[p]==0)
{
nr+=2*(p-1);
for(q=p+p;q<=n;q+=p)
a[q]=1;
}
else
{
tot(p);
nr+=2*t;
}
i=0;
while(nr!=0)
{
b[i]+=nr%10;
nr/=10;
for(k=i;k<=25;k++)
if(b[k]>9)
{
b[k]=b[k]%10;
b[k+1]++;
}
i++;
}
}
ok=0;
for(i=29;i>=0;i--)
{
if(ok==1)
fout<<b[i];
else
if(b[i]!=0)
{
ok=1;
fout<<b[i];
}
}
fout<<"\n";
fin.close();
fout.close();
return 0;
}