在我开始自己编写之前,有没有人看过以下行为的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?
.