Cod sursa(job #203217)

Utilizator savimSerban Andrei Stan savim Data 14 august 2008 17:57:12
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <math.h>
#define maxl 1000010

int i,j,n,m,k,nr;
int ciur[maxl];
int divi[maxl][10];
long long sol;

int main()
{
    freopen("fractii.in","r",stdin);
    freopen("fractii.out","w",stdout);
    
    scanf("%d",&n);
    for (i=2; i<=n; i++)
    if (ciur[i]==0)
    {
        for (j=i; j<=n; j+=i)
        {
            ciur[j]=1;

            divi[j][0]++;
            divi[j][divi[j][0]]=i;
        }
    }

    sol=n;
    for (i=2; i<=n; i++)
    {
        nr=0;
        for (j=1; j<=divi[i][0]; j++)
        {
            for (k=1; k*divi[i][j]<=n; k++)
            if (ciur[k*divi[i][j]]!=i)
            {
                nr++;
                ciur[k*divi[i][j]]=i;
            }
        }
        sol+=n-nr;
    }



    printf("%lld\n",sol);
        
    return 0;    
}