Вопрос

Прежде чем я приступил к написанию этого сам, кто-нибудь видел реализацию 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?.

Другие советы

Взгляните на найденные фрагменты здесь.Они могли бы дать вам фору.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top