4

在我开始自己写这篇文章之前,有没有人看过以下行为的 ruby​​ 实现?

puts 7.nextprime();     #=>  11
puts 7.previousprime(); #=>  5
puts 7.isprime();       #=> true

显然,这种事情对于大数来说是丑陋的,但对于从不超过几千的整数(对我来说是常见的例子),一个明智的实现是可行的,因此是个问题。

4

2 回答 2

10

Ruby 带有一个内置Prime类,允许您从 1 开始遍历素数,但我看不到用 1 以外的起始值初始化它,也没有谓词检查来确定数字是否为素数。我会说去吧,尽管您应该记住,Ruby 中的数学运算可能很慢,如果性能是一个因素,您最好考虑将其编写为 C 或 Java 扩展。这是一个如何使用 RubyInline 在 C 中生成素数的示例。

另外,我建议你避免使用方法名7.isprime——Ruby 中的约定是7.prime?.

于 2009-04-05T15:12:04.423 回答
3

看看在这里找到的片段。他们可以给你一个先机。

于 2009-04-05T17:42:50.520 回答