фиксированное число и простые числа в ruby
-
23-08-2019 - |
Вопрос
Прежде чем я приступил к написанию этого сам, кто-нибудь видел реализацию 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?
.
Другие советы
Взгляните на найденные фрагменты здесь.Они могли бы дать вам фору.