MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply TodayThis Challenge is to further improve the "primes" function for speed/memory usage to the Limit of Cody Memory.

The Matlab function "primes" has a very efficient sieving method but it suffers from memory usage issues, especially on limited memory systems.

The Primes Faster Challenge gives the first half to maximizing the primes function for optimal memory usage and speed.

Cody appears to have 2GB of RAM based upon "out of memory" messages observed.

The test case of 2^30 pushes the upper limits of Cody memory.

The reference solution can process N=2^32 on an 8GB machine in 68sec.

**Input:** N (max of primes to find)

**Output:** vector of primes (all primes less than or equal to N)

**Scoring:** Time to find all primes < 2^30

**Hints:**

1) Doubles use 8 bytes; 2) The primes method p(((k*k+1)/2):k:q) creates a vector using q/k*8 bytes. This is 8/3 the size of p for k=3 because k is a double. 3) Segmentation will keep memory usage below limits at the cost of time. 4) Cody Available Memory appears to be 537.27MB. XP Operating system eats memory. 5) Usage of profiler and Task Manager combined give performance insights.

10 correct solutions
13 incorrect solutions

Last solution submitted on Aug 09, 2013

1 player likes this problem

1 Comment

Richard Zapor
on 7 Aug 2013

Nice merger of primes with a customized sieving to set a new speed record on a limited memory system.

1 Comment

Bart
on 5 Aug 2013

Sorry, but can't get code to run at all. So try to get some help this way...

2 Comments