Cod sursa(job #2110)

Utilizator Omega91Nicodei Eduard Omega91 Data 15 decembrie 2006 22:35:19
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
ifstream f1("fractii.in");
ofstream f2("fractii.out");
bool a[1000001];
int n;
/*int cmmdc(int a, int b)
{
    int rest;
    while (b!=0)
    {
        rest=a%b;
        a=b;
        b=rest;
    }
    return a;
}*/
int eratostene()
{
    int m,i,j;
    f1>>n;
    m=n;
    a[1]=true;
    for (i=4; i<=m; i+=2)
        a[i]=true;
    for (i=3; i<=m; i+=2)
        for (j=i*2; j<=m; j+=i)
            a[j]=true;
    return 0;
}
int main(void)
{
    int suma2,simplu,i,j;
    unsigned long int s;
    eratostene();
    s=0;
    s=2*n-n/2;
    for (i=3; i<=n; i++)
        if (!a[i]) s+=n-n/i;
        else
        {
            suma2=0;
            simplu=1;
            if (i%2==0)
            {
                suma2+=n/2;
                simplu*=2;
            }
            for (j=3; j<=sqrt(i)+10; j+=2)
                if (i%j==0 && (!a[j]))
                {
                    suma2+=n/j;
                    simplu*=j;
                }
            if (!a[simplu]) s+=n-n/simplu;
            else s+=n-suma2+n/simplu;
        }
    f2<<s; 
    f1.close();
    f2.close();
    return 0;
}