Eratosthenes 的筛子

Julia 的余数运算符是%运算符。此运算符的行为类似于使用 C 和 C++等语言的%a % b 是将 a 划分为 b 后留下的签名余数。

此运算符对于实现某些算法非常有用,例如以下 Eratosthenes 筛选的实现。

iscoprime(P, i) = !any(x -> i % x == 0, P)

function sieve(n)
    P = Int[]
    for i in 2:n
        if iscoprime(P, i)
            push!(P, i)
        end
    end
    P
end

用法:

julia> sieve(20)
8-element Array{Int64,1}:
  2
  3
  5
  7
 11
 13
 17
 19