Cod sursa(job #1091723)

Utilizator RathebaSerbanescu Andrei Victor Ratheba Data 25 ianuarie 2014 22:52:34
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <cstdio>
#include <cmath>
using namespace std;

#define MAX 1000002
#define PMAX 78505

int ciur[MAX],np,prim[PMAX],mat[MAX];

void fciur();

int main()
{
    freopen("fractii.in","r",stdin);
    freopen("fractii.out","w",stdout);

    int n,scad=0,i,j,solutie,rad,lin,test,save;
    fciur();
    scanf("%d",&n);
    rad=(int)((double)sqrt(n));
    for(lin=2; lin<=n; lin++)
    {
        test=1;
        save=1;
        do
        {
            if(lin%prim[test]==0){
                for(j=prim[test]; j<=n; j+=prim[test]*save)
                    scad++;
                save=prim[test];

            }
            test++;
        }while(test<=rad+1);
        //for(i=1; i<=n; i++)
          //  if(mat[i]==1){
            //    scad++;
              //  mat[i]=0;
            }
    //printf("%d\n",scad);
    solutie=n*n-scad;
    printf("%d",solutie);
    return 0;
}


void fciur()
{
    int i,j;
    ciur[0]=ciur[1]=1; //nu sunt prime
    for(i=4; i<=MAX; i+=2)
        ciur[i]=1;
    for(i=3; i<=1001; i++) //1000 e rad din MAX
        for(j=i*i; j<=MAX; j=j+i*2)
            ciur[j]=1;
    for(i=1; i<=MAX; i++)
        if(!ciur[i])
            prim[np++]=i;
    np--;
}