Cod sursa(job #1729035)

Utilizator RauliKMarian Raul RauliK Data 14 iulie 2016 00:34:12
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <math.h>
using namespace std;
int divizori( int m, int n );
void multipli( int m, int k, int* x, int &l, int n );
int prim( int n );
int main ()
{
    int n, s;
    ifstream fin("fractii.in");
    fin >> n;
    fin.close();
    s = n;
    for ( int i = 2; i <= n; i++ )
    {
        s = s + divizori( i, n );
    }
    ofstream fout("fractii.out");
    fout << s;
    fout.close();
    return 0;
}
int divizori( int m, int n )
{
    int* x = new int[10000];
    int a = 0;
    for ( int i = 2; i <= m; i++ )
    {
        if ( m % i == 0 && prim( i ) )
        {
             multipli( m, i, x, a, n);
        }
    }
    return n - a;
}
void multipli ( int m, int k, int* x, int &l, int n )
{
    for ( int i = 1; k * i <= n; i++ )
    {
        if ( x[k * i] == 0 )
        {
             x[k * i] = 1;
             l++;
        }
    }
}
int prim( int n )
{
     for ( int i = 2; i <= sqrt(n); i++ )
     {
         if ( n % i == 0 )
         {
              return 0;
         }
     }
     return 1;
}