Pagini recente » Cod sursa (job #2318106) | Cod sursa (job #2425227) | Cod sursa (job #3184508) | Cod sursa (job #2843807) | Cod sursa (job #1729035)
#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;
}