Cod sursa(job #1051372)

Utilizator bogdan10bosBogdan Sitaru bogdan10bos Data 9 decembrie 2013 22:56:38
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <cstdio>

using namespace std;
int n, s, q, i, j, auxi, auxj, p, k, w[100000];
bool v[1000005];
void ciur()
{
    w[++q]=2;
    for(i=3;i*i<=1000100;i=i+2)
        if(v[i]==0)
        {
            w[++q]=i;
            for(j=i*i;j<=1000100;j=j+i)
                v[j]=1;
        }
}
int main()
{
    freopen("fractii.in", "r", stdin);
    freopen("fractii.out", "w", stdout);
    scanf("%d", &n);
    s=1+(n-1)*2;
    ciur();
    for(i=3;i<=n;i++)
    {
        if(v[i]==0&&i%2==1) s=s+2*i-4;
        else
        {
            if(i%2==1) s=s+2;
            for(j=i-1;j>=3;j--)
            {
                if(v[j]==1&&j%2==1) s=s+2;
                else
                {
                    auxi=i;
                    auxj=j;
                    p=1;
                    k=0;
                    while(w[k]<=i)
                    {
                        k++;
                        while(auxi%w[k]==0&&auxj%w[k]==0)
                        {
                            p=p*w[k];
                            auxi=auxi/w[k];
                            auxj=auxj/w[k];
                        }
                    }
                    if(p==1) s=s+2;
                }
            }
        }
    }
    printf("%d", s);
    return 0;
}