Pagini recente » Diferente pentru problema/editor intre reviziile 47 si 46 | Cod sursa (job #1677360) | Cod sursa (job #604513) | Cod sursa (job #2676476) | Cod sursa (job #1294952)
#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;
for(int i=2;i<=n;i++)
{
a[i]=a[i-1];
if(prime[i]==0) a[i]+=2*(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]+=2*prod;
}
}
fprintf(fout,"%d ",a[n]);
}