在我开始自己写这篇文章之前,有没有人看过以下行为的 ruby 实现?
puts 7.nextprime(); #=> 11
puts 7.previousprime(); #=> 5
puts 7.isprime(); #=> true
显然,这种事情对于大数来说是丑陋的,但对于从不超过几千的整数(对我来说是常见的例子),一个明智的实现是可行的,因此是个问题。
在我开始自己写这篇文章之前,有没有人看过以下行为的 ruby 实现?
puts 7.nextprime(); #=> 11
puts 7.previousprime(); #=> 5
puts 7.isprime(); #=> true
显然,这种事情对于大数来说是丑陋的,但对于从不超过几千的整数(对我来说是常见的例子),一个明智的实现是可行的,因此是个问题。
Ruby 带有一个内置Prime
类,允许您从 1 开始遍历素数,但我看不到用 1 以外的起始值初始化它,也没有谓词检查来确定数字是否为素数。我会说去吧,尽管您应该记住,Ruby 中的数学运算可能很慢,如果性能是一个因素,您最好考虑将其编写为 C 或 Java 扩展。这是一个如何使用 RubyInline 在 C 中生成素数的示例。
另外,我建议你避免使用方法名7.isprime
——Ruby 中的约定是7.prime?
.
看看在这里找到的片段。他们可以给你一个先机。