Re: finding primes
- From: Logan Shaw <lshaw-usenet@xxxxxxxxxxxxx>
- Date: Fri, 27 Oct 2006 14:03:06 GMT
Richard Heathfield wrote:
Digital Puer said:
Got this on an interview question: given two integers A and B,
find all primes between them.
I basically wrote an initial function, bool isPrime(int i), which
loops over all numbers between 2 and sqrt(i) to see if i%num == 0,
in which case the number is not a prime.
This is risky if i is not a perfect square, since sqrt(i) will be fractional, and you'll lose the fraction on conversion to an int, so you won't /quite/ be testing right up to the square root.
Actually, I believe it is sufficient. It's just harder to see why.
Here's the reason: you need to test all the integers in the range
from 2 up to sqrt(i), inclusive on both ends. If sqrt(i) isn't an
integer, then ceil(sqrt(i)) is the next integer. But since sqrt(i)
isn't an integer, ceil(sqrt(i)) > sqrt(i). Therefore, you do not
need to test that integer -- it's outside of the range you need to
test. Testing up to floor(sqrt(i)) is sufficient.
- Logan
.
- Follow-Ups:
- Re: finding primes
- From: Richard Heathfield
- Re: finding primes
- References:
- finding primes
- From: Digital Puer
- Re: finding primes
- From: Richard Heathfield
- finding primes
- Prev by Date: Re: Unit Testing in C++
- Next by Date: Re: Unit Testing in C++
- Previous by thread: Re: finding primes
- Next by thread: Re: finding primes
- Index(es):
Relevant Pages
|
|