Cod sursa(job #1294952)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 18 decembrie 2014 16:01:03
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#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]);
}