Vector memory allocation problem. Is anything wrong with vector container to allocate big memory?

Here’s a seive to find composites .It works fine if I input <=19000 but for bigger values the program doesn’t work…
Is there any problem with vector…although vector max size is much bigger.But why it collapses?Then

I’m really in a fix what to do…What container is best to store very large data…
I don t want to use array .It just kills space …
What container ll be best for this ?

and do i need to use any other data structure to get big space?
Thanks

Your program, rather the logic, is wrong. It marks squares of prime numbers greater than 4 as prime itself.

That is, numbers like `25` (=`5``2`), `49` (=`7``2`), `121` (=`11``2`), `169` (=`13``2`), `...` are not printed in this list.

Please check your program for this. And I think, your `vector` is OK.

This is Sieve of Eratosthenes, isn’t it? Please re-check the implementation’s correctness. Here is how it is done (in pseudocode).

1 Like

Oh! It seems that, not just the squares, but all the powers of primes greater than 4 are getting marked as prime. `125` (=`5``3`) is missing. So is `343` (=`7``3`) and `625` (=`5``4`) and `1331` (=`11``3`) and a lot more.

1 Like

Thanks a lot for your help
everything seems okay with 2,3 but i’ve marked 5 as prime simply in the loop and c should increment (when it reaches 5[no reason to not to reach]5*5=25)…I dont get where i ve made mistake…same with powers of 7,11,13 …

I’ve corrected the code But still see,after 32000 no composites are printed and i also got a run -time error… Can you help me in this …Why actually i cant get all composites printed.

If you look at the input/output description (in your ideone code), you are getting a runtine error (`SIGXFSZ`). This just means, you have exceeded the allowable output file size on ideone.

If you run this on your machine, you will get your complete output.

As a proof of what i said, when you are displaying output, just displaying the number (without any messages like “`10th composite is:`”) will show results upto about `14200`.

So, YOUR PROGRAM IS CORRECT! Cheers!

1 Like

Thanks man,You helped a lot

//