On Wednesday, 30 October 2013 at 06:10:59 UTC, Ali Çehreli wrote:
On 10/29/2013 11:04 PM, Zeke wrote:

lowerBound and friends are related:

  http://dlang.org/phobos/std_range.html#.lowerBound

Ali

lowerBound returns a range with the last value being the sqrt, so I can't directly iterate over it because the squares of primes get into the primes array. My code looks like this now:

...
auto sqrt = cast(ulong)sqrt(cast(double)num);
auto sorted = assumeSorted(primes);
ulong upper = sorted.lowerBound(sqrt).length + 1;
foreach(ulong prime; sorted[0..upper]) {
...

Which has no speed improvement, but is using a standard library, so that accomplishes that.

I'd like to refactor so that the primes array is always a SortedRange, so I don't have to cast it for every call of is_prime(). What type would I need to change is_prime(ulong[] primes, ulong num) to so that I could give it the SortedRange?

Also how would I insert a found prime onto the back of a SortedRange?

Zeke

Reply via email to