Zadanie: Dla danej liczby n (1 ≤ n ≤ 1000) wypisz n kolejnych liczb pierwszych w odwrotnej kolejności.
Czas: 1s
Pamięć: 8 MB
Za każdym razem wychodzi mi przekroczony limit pamięci, a nie wiem, w jaki inny (bardziej wydajny) sposób mogę dojść do rozwiązania.
#include<iostream>
using namespace std;
const int N = 10000000;
bool T[N+1];
void sitoEratostenesa(void)
{
int n, p, w;
for (n=2; n<=N; n++) T[n] = 1;
for (p=2; p*p<=N; p++)
{
if (T[p]==1)
{
for (w=p*p; w<=N; w=w+p)
{
T[w] = 0;
}
}
}
}
bool isPrime(int p)
{
return T[p];
}
int ithPrime[1000000];
int main()
{
int licznik, p, k;
sitoEratostenesa();
int zz;
cin >> zz;
k = 0;
for (p=2; p<=N; p++)
{
if (T[p]==true)
{
ithPrime[ k ] = p;
k = k+1;
}
}
for (int i=zz; i>0; i--)
{
cout << ithPrime[i] << ",";
}
return 0;
}