Răspuns :
Initial am facut un cod functional, apoi am observat ca ideea era sa rezolv folosind ciurul lui Eratostene. L-am refacut acum, folosind codul tau ca inspiratie. Dintr-un motiv sau altul, pbinfo ii da 0 puncte, cu toate ca poti verifica si tu ca da macar la exemplu raspunsul corect.
#include <iostream>
#include <fstream>
using namespace std;
bool isPrime(int number)
{
if (number <= 1)
return false;
if (number == 2)
return true;
if (number % 2 == 0)
return false;
int divisor = 3;
while (divisor * divisor <= number)
{
if (number % divisor == 0)
return false;
divisor += 2;
}
return true;
}
int main()
{
ifstream fileIn("eratostene2.in");
ofstream fileOut("eratostene2.out");
int numberOfNumbers, number;
fileIn >> numberOfNumbers;
int sieve[1000000] = {0};
int maxValue=1000000;
for (int i = 2; i * i <= maxValue; ++i)
{
if (isPrime(i))
for (int j = i; j <= maxValue; j += i)
++sieve[j];
}
for (int i = 0; i < numberOfNumbers; ++i)
{
fileIn >> number;
fileOut << sieve[number] << " ";
}
fileIn.close();
fileOut.close();
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că ați găsit conținutul oferit util și inspirațional. Dacă aveți întrebări suplimentare sau doriți asistență, vă încurajăm să ne contactați. Ne-ar face plăcere să reveniți și nu uitați să ne adăugați în lista dumneavoastră de favorite!