Pagini recente » Borderou de evaluare (job #1950819) | Borderou de evaluare (job #1822556) | Cod sursa (job #1945847)
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main(void)
{
int* v;
int i,n;
int contor;
FILE* f = fopen("fractii.in","rt");
FILE* g = fopen("fractii.out","wt");
fscanf(f,"%d",&n);
int nr_fractii = n; /// Pleaca de la n deoarece intotdeauna vom avea 1/n ireductibil
/// Alocam dinamic vectorul v & initializam 0
v = (int*)malloc(sizeof(int)*n+1);
for(i = 0; i <= n; i++)
v[i] = 0;
for (i = 2; i <= n; i++)
{
if(v[i] == 0)
{
contor = 0;
for(int j = 2*i; j<=n; j += i)
{
contor++;
if(v[j] == 0)
v[j] += contor;
else
v[j]++;
}
/// Avem i-1 fractii supra_unitare toate ireductibile
nr_fractii += i - 1;
/// Avem n - i + 1 fractii subunitarea, insa dintre acestea reductibile sunt contor
nr_fractii += (n - i) - contor;
}
if(v[i] != 0)
{
/// Avem i - 1 fractii supraunitare dintre care v[i] fractii reductibile
nr_fractii += i - 1 - v[i];
nr_fractii += (n / i - 1) * (v[i] + 1);
}
}
fprintf(g,"%d",nr_fractii);
}