FYI - re: DarkMouses простой метод выше - я нашел его действительно полезным, но есть несколько ошибок (я думаю!), Которые нужно объяснить:
Это должны быть круглые скобки, а не квадратные скобки ...В противном случае вы получите TypeError
Range can't be coerced into Fixnum (TypeError)
Во-вторых, это первое двоеточие перед 'false' также приведет к ошибке.Это неправильный синтаксис, насколько я знаю.Избавься от этого.
Наконец, я думаю, ты понял это неправильно?Если вы исправите ошибки, о которых я упоминал, он вернет истину, если это не простое число, и ложь, если это так.
Думаю, вы можете вообще отбросить троичный оператор, и просто выполните:*
Очевидно, что это не охватывает крайние случаи (0,1,2), но давайте не будем расщеплять волосы.
... Для тех, кто любит расчесывание волос, вот мое полное решение этой проблемы:
def prime?(n)
return false if n < 2
(2..Math.sqrt(n)).none? {|num| length % num == 0}
end
Надеюсь, я ничего не пропустил :)