# help, trying to find prime number

Show 80 post(s) from this thread on one page
Page 2 of 2 First 12
• 05-02-2009
Ideswa
Yeah, I printf() them. Without printing it's 1.8 secs. I have looked into wikipedia on Trial division - Wikipedia, the free encyclopedia, is that the algorithm you use? That is just the "brute force" one right? Then what is perfect to it?
• 05-02-2009
laserlight
Quote:

Originally Posted by Ideswa
I have looked into wikipedia on Trial division - Wikipedia, the free encyclopedia, is that the algorithm you use?

Yes, which is pretty much the same as what you used. I call it "perfect" because it only uses primes as trial divisors.

The sieve of Eratosthenes is likely to be much faster and yet feasible in this case of just finding the primes less than one million.
• 05-02-2009
Ideswa
The sieve is memory-heavy though?
So you store primes in an array or something and when you check integer 'n' for primality you check if 'n mod x' != 0 where x are only primes you calculated before?

Edit: I now store validated primes in an array and only use the modulus with the primes in that array. Time without printf() now is 0.7 secs for integers up to 1 million.
• 05-02-2009
laserlight
Quote:

Originally Posted by Ideswa
The sieve is memory-heavy though?

Assuming CHAR_BIT is 8, you could store a million bits in 125000 bytes. But even if you use ints instead (bools would be most natural option), that would still be less than sizeof(int) megabytes of memory needed, which should fit on the stack too.

Quote:

Originally Posted by Ideswa
So you store primes in an array or something and when you check integer 'n' for primality you check if 'n mod x' != 0 where x are only primes you calculated before?

Yes, up to the square root of the candidate number.
• 05-02-2009
vampirekid.13
Quote:

Originally Posted by laserlight
hmm... there might be another reason: did you print out all the primes found? When I changed my implementation to do that (since that is what vampirekid.13 did, after all), the time taken was in the neighbourhood of 2.25 seconds.

u guys are a lot more advanced than me however, i just made a quick program because it was a project for my c++ tutorial, i appreciate the great advice and as i get further and learn more ill make it better, but as of right now i dont really know how to "break" out of a loop, i know how to skip the prime numbers tho so i guess i can add that in. but yea, you guys prolly did this for years now, im on my first week.
Show 80 post(s) from this thread on one page
Page 2 of 2 First 12