在我开始自己写这篇文章之前,有没有人看到过以下行为的 ruby 实现?
puts 7.nextprime(); #=> 11
puts 7.previousprime(); #=> 5
puts 7.isprime(); #=> true
显然,这种事情对于大数来说是丑陋的,但对于从不超过几千的整数(对我来说是常见的例子),一个明智的实现是可行的,因此问题。
最佳答案
Ruby 带有一个内置的 Prime
类,它允许您从 1 开始遍历素数,但我看不到用 1 以外的起始值初始化它的方法,也没有谓词检查判断一个数是否为素数。我会说去做吧,尽管您应该记住 Ruby 中的数学可能很慢,如果性能是一个因素,您最好考虑将其编写为 C 或 Java 扩展。这是 how to use RubyInline to generate primes in C 的示例.
此外,我建议您避免使用方法名称 7.isprime
- Ruby 中的约定是 7.prime?
。
关于ruby - ruby 中的 fixnum 和素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/719049/