在我开始写这篇我自己,有没有人看到了以下行为的Ruby实现?

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

显然,这种事情是丑陋的人,大批但从未整数超过几千(常见的实例对我来说)一个合理的实施是可行的,因此这个问题。

有帮助吗?

解决方案

红宝石配有内置Prime类,允许您通过从1开始的素数迭代,但我看不到出路与1以外的初始值进行初始化,也不是一个谓词检查,以确定是否一个数是素数。我说去了,但是你应该记住的是,数学在Ruby中可能会很慢,如果性能是一个因素,你可能会更好考虑写它作为一个C或Java扩展。下面是href="http://on-ruby.blogspot.com/2006/07/rubyinline-making-making-things-faster.html" rel="noreferrer">如何使用了RubyInline生成素

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

其他提示

看看发现这里的片段。他们可以给你一个领先地位。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top