Cod sursa(job #1757976)

Utilizator nnnmmmcioltan alex nnnmmm Data 16 septembrie 2016 10:35:55
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#include<bitset>

const int NMAX=1000002;

std::bitset<NMAX> neprim;

void Ciur(int n)
{
 neprim[1]=true;
 for(int i=2;i*i<=n;i++)
     {
      if(neprim[i])
         continue;
      for(int j=i*i;j<=n;j+=i)
          {
           neprim[j]=true;
          }
     }
}

int phi[NMAX];

void Euler(int n)
{
 for(int i=1;i<=n;i++)
     phi[i]=i;
 for(int i=2;i<=n;i++)
     {
      if(neprim[i])
         continue;
      for(int j=i;j<=n;j+=i)
          {
           phi[j]-=phi[j]/i;
          }
     }
}

int main()
{
 FILE *file=fopen("fractii.in","r");
 int n;
 fscanf(file,"%d ",&n);
 fclose(file);
 Ciur(n);
 Euler(n);
 long long rasp=0ll;
 for(int i=1;i<=n;i++)
     rasp+=2ll*phi[i];
 file=fopen("fractii.out","w");
 fprintf(file,"%lld ",rasp-1ll);
 fclose(file);
 return 0;
}