在 Julia 中列出素数的更有效方法

More efficient way to list prime numbers in Julia

我不确定如何在一个函数的数组中列出素数。由于可能的代码被分成两个函数,我猜测这对性能有重大影响。
我怎样才能让下面的代码更有效率?

function prime_check(n)
    
    primes = []
    trash  = []
    
    for i in 2:n-1
        if n%i == 0
            push!(trash, 1)
        end 
    end
    
    if length(trash) == 0
        push!(primes, n)
    end

    return primes
       
end

function prime_list(n)
    
    list = []
    
    for i in 2:n
        
        if length(prime_check(i)) > 0          
            push!(list, prime_check(i)[1])
        end
            
    end
    return list
end


如果您不介意使用一些包来优化您的代码,我建议使用“Primes.jl”。

要安装它,运行:

Pkg.add("Primes")

来自 Julia REPL。

这个包有一些函数用于因式分解、素数识别、素数生成器等。

Primes.isprime — 函数。

isprime(n::Integer) -> Bool

示例:

julia> isprime(3)
true

希望对您有所帮助。