首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mathn中使用Primes.new迭代质数

在mathn中使用Primes.new迭代质数
EN

Stack Overflow用户
提问于 2012-10-26 07:02:05
回答 2查看 329关注 0票数 0

我在Ruby语言的mathn库中找到了Prime.new。我用它来生成一个问题的素数。我想用Primes.new遍历1到1000之间的所有素数。有没有办法在for循环中使用Prime.new,或者以某种方式迭代质数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-26 07:12:38

你也可以像这样得到n个前几个素数:

代码语言:javascript
复制
Prime.each(100) do |prime|
  p prime  #=> 2, 3, 5, 7, 11, ...., 97
end

cf:http://www.ruby-doc.org/gems/docs/b/backports-2.6.1/Prime.html

编辑:为了得到给定数值以上的n个第一个质数,我会这样做(这是一个草稿)

代码语言:javascript
复制
require 'mathn'

def prime_numbers_from start, n
  primes = []
  Prime.each(n) do |prime|
    primes << prime if prime > start
  end
  primes
end

prime_numbers_from(10, 30)
# returns => [11, 13, 17, 19, 23, 29]
票数 1
EN

Stack Overflow用户

发布于 2012-10-26 07:10:45

这里有一个雄辩的方法来处理它。

代码语言:javascript
复制
ruby-1.9.3-p194 :001 > require 'mathn'
 => true

ruby-1.9.3-p194 :002 > Prime.each(1000) do |i|
ruby-1.9.3-p194 :003 >   puts i
ruby-1.9.3-p194 :004 > end
2
3
.
.
.
991
997
 => nil

P.S. Prime.new似乎已经过时了。

代码语言:javascript
复制
ruby-1.9.3-p194 :005 > Prime.new
Prime::new is obsolete. use Prime::instance or class methods of Prime.
 => #<Prime:0x0000010083ca10 @generator=#<Prime::EratosthenesGenerator...>> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13078620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档