Ruby中的素数测试

时间:2013-08-15 15:12:03

标签: ruby arrays

我有一个数组a = [1,2,3,4,5]。我想测试哪些数字是 prime ,并希望生成输出{1=>false, 2=>true, 3=>true, 4=>false, 5=>true}

任何一个班轮都将受到赞赏。

3 个答案:

答案 0 :(得分:7)

我发布此评论作为评论。

require 'prime'

a = (1..5).to_a
Hash[a.map{ |x| [x, x.prime?] }]
=> {1=>false, 2=>true, 3=>true, 4=>false, 5=>true}

答案 1 :(得分:5)

以下内容适用于您,使用Prime#prime?

require 'prime'

a = [1,2,3,4,5]
Hash[a.zip(a.map(&Prime.method(:prime?)))]
# => {1=>false, 2=>true, 3=>true, 4=>false, 5=>true}

答案 2 :(得分:0)

另一种解决方案:

a = [1,2,3,4,5]
results = {}

a.each {|i| results[i] = (1..i).map{|x| i/x.to_f % 1 == 0}.count(true) == 2}
puts results.inspect #=> {1 => false, 2 => true, 3 => true, 4 => false, 5 => true}