The following version uses 32-bit integers in the arrays (to reduce cache pressure) and 32-bit integer remainder operations, with everything else 64-bit, and is nearly 3x faster than the original code on my machine:
rem32(x::Int32, y::Int32) = Base.box(Int32,Base.srem_int(Base.unbox(Int32,x),Base.unbox(Int32,y))) function test3() p = Int32[0 for i=1:20000] result = Int32[0 for i=1:20000] k = 0 n = 2 while k < int32(20000) i::Int32 = 0 while (i < k) && ( rem32(int32(n), p[i+1]) != 0 ) i = i + 1 end if i == k k = k + 1 p[k] = n result[k] = n end n = n + 1 end print(sum(result),"\r\n") end