Cod sursa(job #1889695)

Utilizator aeromaniaXRadoi Iulian aeromaniaX Data 22 februarie 2017 20:46:58
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;

FILE *f,*g;
bool a[1000001];
int n,nr;

int cmmdc(int a, int b)
{
    int r;
    while(b>0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
void siev(int n)
          {
              a[1]=1;

              for(int i=2;i<=n;i++)
                if(a[i]==0)
                for(int j=2;j*i<=n;j++)
                a[i*j]=1;
          }
int main()
{
    freopen("fractii.in","r",stdin);
    freopen("fractii.out","w",stdout);

    scanf("%d",&n);
    siev(n);
    nr=n-1;
    for(int i=2;i<n;i++)
    {
        if(!a[i])
        {
            for(int j=1+i;j<=n;j++)
                if(j%i!=0)nr++;
        }
        else
        {
            for(int j=i+1;j<=n;j++)
                if(!a[j]) nr++;
            else
            {
                if(cmmdc(i,j)==1) nr++;
            }
        }
    }
    printf("%d",nr*2+1);
    return 0;
}