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();
}