Julia 返回内存不足错误的最大素因子算法

Julia 返回内存不足错误的最大素因子算法,julia,Julia,我正试图通过欧拉计划学习朱莉娅。对于最大的素因子问题,我遇到了一个内存不足的问题,我不明白为什么 我在Python中尝试了相同的解决方案,没有任何问题 function Primes(n) numbers = Set{Int64}(2:n) primes = Int64[] while length(numbers)!=0 p = pop!(numbers,minimum(numbers)) push!(primes,p)

我正试图通过欧拉计划学习朱莉娅。对于最大的素因子问题,我遇到了一个内存不足的问题,我不明白为什么

我在Python中尝试了相同的解决方案,没有任何问题

function Primes(n)
    numbers = Set{Int64}(2:n)
    primes = Int64[]
    while length(numbers)!=0
        p = pop!(numbers,minimum(numbers))
        push!(primes,p)
        if length(numbers)!=0
            numbers = setdiff(numbers,Set{Int64}(2*p:p:maximum(numbers)))
        end
    end
    return primes
end

function LPF(n)
    primes = Primes(n//2)
    for p in primes
        if n%p==0
            return p
        end
    end
end

LPF(600851475143)
这是我的错误消息:

OutOfMemoryError()

Stacktrace:
 [1] _growend! at .\array.jl:811 [inlined]
 [2] resize! at .\array.jl:1003 [inlined]
 [3] rehash!(::Dict{Int64,Nothing}, ::Int64) at .\dict.jl:183
 [4] sizehint! at .\dict.jl:242 [inlined]
 [5] sizehint! at .\set.jl:64 [inlined]
 [6] union!(::Set{Int64}, ::UnitRange{Rational{Int64}}) at .\abstractset.jl:79
 [7] Type at .\set.jl:10 [inlined]
 [8] Primes(::Rational{Int64}) at .\In[14]:2
 [9] LPF(::Int64) at .\In[24]:2
 [10] top-level scope at In[25]:1

您正试图创建一个包含大约
300*10^9
条目的集合-您不太可能有那么多内存。有趣的是,Python能够分配这么多内存(您是否也使用了相同的
n
和方法?)?我知道我可以用一个包来解决这个问题,但这让我感到很困扰,因为我清楚地记得以前用python解决过这个问题——这个问题并不要求你生成素数,而是要找到
n
的因式分解。但是,如果您想首先尝试列出所有素数,请注意
n
不能被大于
isqrt(n)
的素数整除。我的教程中给出了生成小素数的示例代码。谢谢。我一定会阅读你的教程,不仅仅是素数算法!我需要所有我能得到的帮助朱莉娅:P