👤

Am incercat sa fac problema #3313 Eratostene2 de pe pbinfo.ro si imi da bine exemplele , dar cand o pun primesc 0 puncte, imi poate zice cineva ce am gresit?

#include

using namespace std;

ifstream fin("eratostene2.in");
ofstream fout("eratostene2.out");

int E[1000000]={0};

int main()
{
int max=1000000;
for(int i=2;i*i<=max;i++)
if(E[i]==0)
for(int j=i;j<=max;j=j+i)
E[j]++;
int n, m;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>m;
fout< }
return 0;
}


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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!


Ze Schools: Alte intrebari