Pagini recente » Cod sursa (job #2920407) | Cod sursa (job #832285) | Cod sursa (job #846471) | Cod sursa (job #106820) | Cod sursa (job #2023435)
#include <iostream>
#include <fstream>
///EROARE: NU POT CREA UN TABLOU CU UN MILION DE ELEMENTE
int main()
{
//citire N
long int N;
std::ifstream in_fractii("fractii.in");
std::ofstream out_fractii("fractii.out");
in_fractii >> N;
//din numarul maxim de fractii care se pot forma din numerele date voi scadea fractiile reducitbile
long int num_fract_ireduct = N * N;
//std::cout << num_fract_ireduct << " ";
//de asemenea scadem toate numerele cu numaratorul egal cu numitorul
num_fract_ireduct = num_fract_ireduct - (N - 1);
long int ciurul_lui_erastoten[N/2 + 1] = {0};
long int prim = 2;
while(prim <= N/2)
{
// daca numar prim
if(ciurul_lui_erastoten[prim] == 0)
{
long int temp = prim;
long int n = 1;
while(temp <= N)
{
temp = temp + prim;
//std::cout << "prim: " << prim << "temp: " << temp << std::endl;
if(temp <= N/2 + 1)
ciurul_lui_erastoten[temp] = 1;
if(temp <= N)
n++;
}
num_fract_ireduct = num_fract_ireduct - (n * (n - 1));
}
prim++;
}
out_fractii << num_fract_ireduct;
return 0;
}