Pagini recente » Cod sursa (job #1246978) | Monitorul de evaluare | Cod sursa (job #1780501) | Cod sursa (job #2670127) | Cod sursa (job #1294960)
#include <stdio.h>
bool prime[1000001];
int a[1000001];
int main()
{
FILE *fin,*fout;
fin=fopen("fractii.in","r");
fout=fopen("fractii.out","w");
int n;
fscanf(fin,"%d",&n);
for(int i=2;i<=1000000;i++)
{
if(prime[i]==0)
{
for(int j=i;j<=1000000/i;j++) prime[i*j]=1;
}
}
a[1]=1;
int temp,prod;
long long s=0;
for(int i=2;i<=n;i++)
{
if(prime[i]==0) a[i]+=(i-1);
else
{
temp=i;
prod=i;
if(temp%2==0)
{
prod/=2;
while(temp%2==0) temp/=2;
}
for(int j=3;temp!=1;j+=2)
{
if(temp%j==0&&prime[j]==0)
{
prod/=j;
prod*=(j-1);
while(temp%j==0) temp/=j;
}
}
a[i]+=prod;
}
s+=a[i];
}
fprintf(fout,"%lld",2*s+1);
}